//
// Copyright (C) 2009 Eugeny Grishul
//
// See license in License.txt
//

namespace NObjective.Proxies {
	using System;
	using System.Runtime.InteropServices;
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _NS128bitWrapper : IEquatable<_NS128bitWrapper> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NS128bitWrapper;
		public static implicit operator NSObject( _NS128bitWrapper value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NS128bitWrapper value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NS128bitWrapper value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NS128bitWrapper?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NS128bitWrapper value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NS128bitWrapper value1, _NS128bitWrapper value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NS128bitWrapper value1, _NS128bitWrapper value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NS128bitWrapper( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NS128bitWrapper alloc() {
			return new _NS128bitWrapper( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject initWithBytes_( System.IntPtr bytes ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithBytes_( Handle, CachedSelectors.initWithBytes_, out ___occuredException, sizeof( System.IntPtr ), bytes );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithBytes_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr bytes );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithBytes_ = "initWithBytes:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSException ) )]
	public struct _NSCoreDataException : IEquatable<_NSCoreDataException> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSCoreDataException;
		public static implicit operator NSException( _NSCoreDataException value ) {
			return new NSException( value.Handle );
		}
		public static implicit operator NSObject( _NSCoreDataException value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSCoreDataException value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSCoreDataException value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSCoreDataException?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSCoreDataException value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSCoreDataException value1, _NSCoreDataException value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSCoreDataException value1, _NSCoreDataException value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSCoreDataException( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSCoreDataException alloc() {
			return new _NSCoreDataException( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject exceptionWithName_code_reason_userInfo_( NObjective.RuntimeObject name, int code, NObjective.RuntimeObject reason, NObjective.RuntimeObject userInfo ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.exceptionWithName_code_reason_userInfo_( ClassHandle, CachedSelectors.exceptionWithName_code_reason_userInfo_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( int ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, code, reason, userInfo );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public int code() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.code( Handle, CachedSelectors.code, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject initWithName_code_reason_userInfo_( NObjective.RuntimeObject name, int code, NObjective.RuntimeObject reason, NObjective.RuntimeObject userInfo ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithName_code_reason_userInfo_( Handle, CachedSelectors.initWithName_code_reason_userInfo_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( int ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, code, reason, userInfo );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int code( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr exceptionWithName_code_reason_userInfo_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, int code, NObjective.RuntimeObject reason, NObjective.RuntimeObject userInfo );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithName_code_reason_userInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, int code, NObjective.RuntimeObject reason, NObjective.RuntimeObject userInfo );
		}
		static internal class CachedSelectors {
			public static readonly Selector code = "code";
			public static readonly Selector exceptionWithName_code_reason_userInfo_ = "exceptionWithName:code:reason:userInfo:";
			public static readonly Selector initWithName_code_reason_userInfo_ = "initWithName:code:reason:userInfo:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSException ) )]
	public struct _NSCoreDataOptimisticLockingException : IEquatable<_NSCoreDataOptimisticLockingException> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSCoreDataOptimisticLockingException;
		public static implicit operator NSException( _NSCoreDataOptimisticLockingException value ) {
			return new NSException( value.Handle );
		}
		public static implicit operator NSObject( _NSCoreDataOptimisticLockingException value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSCoreDataOptimisticLockingException value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSCoreDataOptimisticLockingException value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSCoreDataOptimisticLockingException?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSCoreDataOptimisticLockingException value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSCoreDataOptimisticLockingException value1, _NSCoreDataOptimisticLockingException value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSCoreDataOptimisticLockingException value1, _NSCoreDataOptimisticLockingException value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSCoreDataOptimisticLockingException( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSCoreDataOptimisticLockingException alloc() {
			return new _NSCoreDataOptimisticLockingException( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSManagedObjectID ) )]
	public struct _NSCoreManagedObjectID : IEquatable<_NSCoreManagedObjectID> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSCoreManagedObjectID;
		public static implicit operator NSManagedObjectID( _NSCoreManagedObjectID value ) {
			return new NSManagedObjectID( value.Handle );
		}
		public static implicit operator NSObject( _NSCoreManagedObjectID value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSCoreManagedObjectID value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSCoreManagedObjectID value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSCoreManagedObjectID?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSCoreManagedObjectID value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSCoreManagedObjectID value1, _NSCoreManagedObjectID value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSCoreManagedObjectID value1, _NSCoreManagedObjectID value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSCoreManagedObjectID( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSCoreManagedObjectID alloc() {
			return new _NSCoreManagedObjectID( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static uint allocateBatch_count_( System.IntPtr batch, uint count ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allocateBatch_count_( ClassHandle, CachedSelectors.allocateBatch_count_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( uint ), batch, count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public static char automaticallyNotifiesObserversForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.automaticallyNotifiesObserversForKey_( ClassHandle, CachedSelectors.automaticallyNotifiesObserversForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeClass classWithStore_andEntity_( NObjective.RuntimeObject store, NObjective.RuntimeObject andEntity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.classWithStore_andEntity_( ClassHandle, CachedSelectors.classWithStore_andEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), store, andEntity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeObject managedObjectIDFromURIRepresentation_( NObjective.RuntimeObject representation ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectIDFromURIRepresentation_( ClassHandle, CachedSelectors.managedObjectIDFromURIRepresentation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), representation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static void __release() {
			RuntimeObject ___occuredException;
			NativeMethods.__release( ClassHandle, CachedSelectors.__release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static void setObjectStoreIdentifier_( NObjective.RuntimeObject identifier ) {
			RuntimeObject ___occuredException;
			NativeMethods.setObjectStoreIdentifier_( ClassHandle, CachedSelectors.setObjectStoreIdentifier_, out ___occuredException, sizeof( NObjective.RuntimeObject ), identifier );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void __release( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint allocateBatch_count_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr batch, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char automaticallyNotifiesObserversForKey_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass classWithStore_andEntity_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store, NObjective.RuntimeObject andEntity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectIDFromURIRepresentation_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject representation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setObjectStoreIdentifier_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject identifier );
		}
		static internal class CachedSelectors {
			public static readonly Selector __release = "__release";
			public static readonly Selector allocateBatch_count_ = "allocateBatch:count:";
			public static readonly Selector automaticallyNotifiesObserversForKey_ = "automaticallyNotifiesObserversForKey:";
			public static readonly Selector classWithStore_andEntity_ = "classWithStore:andEntity:";
			public static readonly Selector managedObjectIDFromURIRepresentation_ = "managedObjectIDFromURIRepresentation:";
			public static readonly Selector release = "release";
			public static readonly Selector setObjectStoreIdentifier_ = "setObjectStoreIdentifier:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMutableArray ) )]
	public struct _NSFaultingMutableArray : IEquatable<_NSFaultingMutableArray> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSFaultingMutableArray;
		public static implicit operator NSMutableArray( _NSFaultingMutableArray value ) {
			return new NSMutableArray( value.Handle );
		}
		public static implicit operator NSArray( _NSFaultingMutableArray value ) {
			return new NSArray( value.Handle );
		}
		public static implicit operator NSObject( _NSFaultingMutableArray value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSFaultingMutableArray value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSFaultingMutableArray value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSFaultingMutableArray?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSFaultingMutableArray value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSFaultingMutableArray value1, _NSFaultingMutableArray value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSFaultingMutableArray value1, _NSFaultingMutableArray value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSFaultingMutableArray( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSFaultingMutableArray alloc() {
			return new _NSFaultingMutableArray( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject initWithSource_forRelationship_asFault_( NObjective.RuntimeObject source, NObjective.RuntimeObject forRelationship, char asFault ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSource_forRelationship_asFault_( Handle, CachedSelectors.initWithSource_forRelationship_asFault_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), source, forRelationship, asFault );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject relationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationship( Handle, CachedSelectors.relationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValue_forKey_( NObjective.RuntimeObject value, NObjective.RuntimeObject forKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValue_forKey_( Handle, CachedSelectors.setValue_forKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, forKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject source() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.source( Handle, CachedSelectors.source, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void turnIntoFault() {
			RuntimeObject ___occuredException;
			NativeMethods.turnIntoFault( Handle, CachedSelectors.turnIntoFault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject valueForKeyPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKeyPath_( Handle, CachedSelectors.valueForKeyPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void willRead() {
			RuntimeObject ___occuredException;
			NativeMethods.willRead( Handle, CachedSelectors.willRead, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSource_forRelationship_asFault_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject source, NObjective.RuntimeObject forRelationship, char asFault );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr source( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void turnIntoFault( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKeyPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willRead( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector initWithSource_forRelationship_asFault_ = "initWithSource:forRelationship:asFault:";
			public static readonly Selector relationship = "relationship";
			public static readonly Selector release = "release";
			public static readonly Selector setValue_forKey_ = "setValue:forKey:";
			public static readonly Selector source = "source";
			public static readonly Selector turnIntoFault = "turnIntoFault";
			public static readonly Selector valueForKey_ = "valueForKey:";
			public static readonly Selector valueForKeyPath_ = "valueForKeyPath:";
			public static readonly Selector willRead = "willRead";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMutableSet ) )]
	public struct _NSFaultingMutableSet : IEquatable<_NSFaultingMutableSet> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSFaultingMutableSet;
		public static implicit operator NSMutableSet( _NSFaultingMutableSet value ) {
			return new NSMutableSet( value.Handle );
		}
		public static implicit operator NSSet( _NSFaultingMutableSet value ) {
			return new NSSet( value.Handle );
		}
		public static implicit operator NSObject( _NSFaultingMutableSet value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSFaultingMutableSet value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSFaultingMutableSet value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSFaultingMutableSet?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSFaultingMutableSet value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSFaultingMutableSet value1, _NSFaultingMutableSet value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSFaultingMutableSet value1, _NSFaultingMutableSet value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSFaultingMutableSet( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSFaultingMutableSet alloc() {
			return new _NSFaultingMutableSet( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject initWithSource_forRelationship_asFault_( NObjective.RuntimeObject source, NObjective.RuntimeObject forRelationship, char asFault ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSource_forRelationship_asFault_( Handle, CachedSelectors.initWithSource_forRelationship_asFault_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), source, forRelationship, asFault );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject relationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationship( Handle, CachedSelectors.relationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValue_forKey_( NObjective.RuntimeObject value, NObjective.RuntimeObject forKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValue_forKey_( Handle, CachedSelectors.setValue_forKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, forKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject source() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.source( Handle, CachedSelectors.source, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void turnIntoFault() {
			RuntimeObject ___occuredException;
			NativeMethods.turnIntoFault( Handle, CachedSelectors.turnIntoFault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject valueForKeyPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKeyPath_( Handle, CachedSelectors.valueForKeyPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void willRead() {
			RuntimeObject ___occuredException;
			NativeMethods.willRead( Handle, CachedSelectors.willRead, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSource_forRelationship_asFault_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject source, NObjective.RuntimeObject forRelationship, char asFault );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr source( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void turnIntoFault( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKeyPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willRead( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector initWithSource_forRelationship_asFault_ = "initWithSource:forRelationship:asFault:";
			public static readonly Selector relationship = "relationship";
			public static readonly Selector release = "release";
			public static readonly Selector setValue_forKey_ = "setValue:forKey:";
			public static readonly Selector source = "source";
			public static readonly Selector turnIntoFault = "turnIntoFault";
			public static readonly Selector valueForKey_ = "valueForKey:";
			public static readonly Selector valueForKeyPath_ = "valueForKeyPath:";
			public static readonly Selector willRead = "willRead";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _NSFaultingMutableSetMutationMethods : IEquatable<_NSFaultingMutableSetMutationMethods> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSFaultingMutableSetMutationMethods;
		public static implicit operator NSObject( _NSFaultingMutableSetMutationMethods value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSFaultingMutableSetMutationMethods value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSFaultingMutableSetMutationMethods value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSFaultingMutableSetMutationMethods?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSFaultingMutableSetMutationMethods value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSFaultingMutableSetMutationMethods value1, _NSFaultingMutableSetMutationMethods value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSFaultingMutableSetMutationMethods value1, _NSFaultingMutableSetMutationMethods value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSFaultingMutableSetMutationMethods( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSFaultingMutableSetMutationMethods alloc() {
			return new _NSFaultingMutableSetMutationMethods( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSFaultHandler ) )]
	public struct _NSInvalidationFaultHandler : IEquatable<_NSInvalidationFaultHandler> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSInvalidationFaultHandler;
		public static implicit operator NSFaultHandler( _NSInvalidationFaultHandler value ) {
			return new NSFaultHandler( value.Handle );
		}
		public static implicit operator NSObject( _NSInvalidationFaultHandler value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSInvalidationFaultHandler value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSInvalidationFaultHandler value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSInvalidationFaultHandler?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSInvalidationFaultHandler value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSInvalidationFaultHandler value1, _NSInvalidationFaultHandler value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSInvalidationFaultHandler value1, _NSInvalidationFaultHandler value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSInvalidationFaultHandler( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSInvalidationFaultHandler alloc() {
			return new _NSInvalidationFaultHandler( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject defaultHandler() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.defaultHandler( ClassHandle, CachedSelectors.defaultHandler, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject fulfillAggregateFaultForObject_andRelationship_withContext_( NObjective.RuntimeObject @object, NObjective.RuntimeObject andRelationship, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fulfillAggregateFaultForObject_andRelationship_withContext_( Handle, CachedSelectors.fulfillAggregateFaultForObject_andRelationship_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, andRelationship, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr defaultHandler( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fulfillAggregateFaultForObject_andRelationship_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject andRelationship, NObjective.RuntimeObject withContext );
		}
		static internal class CachedSelectors {
			public static readonly Selector defaultHandler = "defaultHandler";
			public static readonly Selector fulfillAggregateFaultForObject_andRelationship_withContext_ = "fulfillAggregateFaultForObject:andRelationship:withContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSEnumerator ) )]
	public struct _NSKnownKeysEnumerator : IEquatable<_NSKnownKeysEnumerator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSKnownKeysEnumerator;
		public static implicit operator NSEnumerator( _NSKnownKeysEnumerator value ) {
			return new NSEnumerator( value.Handle );
		}
		public static implicit operator NSObject( _NSKnownKeysEnumerator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSKnownKeysEnumerator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSKnownKeysEnumerator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSKnownKeysEnumerator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSKnownKeysEnumerator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSKnownKeysEnumerator value1, _NSKnownKeysEnumerator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSKnownKeysEnumerator value1, _NSKnownKeysEnumerator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSKnownKeysEnumerator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSKnownKeysEnumerator alloc() {
			return new _NSKnownKeysEnumerator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _NSMemoryStorePredicateRemapper : IEquatable<_NSMemoryStorePredicateRemapper> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSMemoryStorePredicateRemapper;
		public static implicit operator NSObject( _NSMemoryStorePredicateRemapper value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSMemoryStorePredicateRemapper value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSMemoryStorePredicateRemapper value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSMemoryStorePredicateRemapper?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSMemoryStorePredicateRemapper value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSMemoryStorePredicateRemapper value1, _NSMemoryStorePredicateRemapper value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSMemoryStorePredicateRemapper value1, _NSMemoryStorePredicateRemapper value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSMemoryStorePredicateRemapper( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSMemoryStorePredicateRemapper alloc() {
			return new _NSMemoryStorePredicateRemapper( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject defaultInstance() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.defaultInstance( ClassHandle, CachedSelectors.defaultInstance, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject createPredicateForFetchFromPredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createPredicateForFetchFromPredicate_( Handle, CachedSelectors.createPredicateForFetchFromPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void visitPredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			NativeMethods.visitPredicate_( Handle, CachedSelectors.visitPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void visitPredicateExpression_( NObjective.RuntimeObject expression ) {
			RuntimeObject ___occuredException;
			NativeMethods.visitPredicateExpression_( Handle, CachedSelectors.visitPredicateExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createPredicateForFetchFromPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr defaultInstance( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void visitPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void visitPredicateExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression );
		}
		static internal class CachedSelectors {
			public static readonly Selector createPredicateForFetchFromPredicate_ = "createPredicateForFetchFromPredicate:";
			public static readonly Selector defaultInstance = "defaultInstance";
			public static readonly Selector visitPredicate_ = "visitPredicate:";
			public static readonly Selector visitPredicateExpression_ = "visitPredicateExpression:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMutableSet ) )]
	public struct _NSNotifyingWrapperMutableSet : IEquatable<_NSNotifyingWrapperMutableSet> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSNotifyingWrapperMutableSet;
		public static implicit operator NSMutableSet( _NSNotifyingWrapperMutableSet value ) {
			return new NSMutableSet( value.Handle );
		}
		public static implicit operator NSSet( _NSNotifyingWrapperMutableSet value ) {
			return new NSSet( value.Handle );
		}
		public static implicit operator NSObject( _NSNotifyingWrapperMutableSet value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSNotifyingWrapperMutableSet value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSNotifyingWrapperMutableSet value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSNotifyingWrapperMutableSet?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSNotifyingWrapperMutableSet value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSNotifyingWrapperMutableSet value1, _NSNotifyingWrapperMutableSet value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSNotifyingWrapperMutableSet value1, _NSNotifyingWrapperMutableSet value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSNotifyingWrapperMutableSet( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSNotifyingWrapperMutableSet alloc() {
			return new _NSNotifyingWrapperMutableSet( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject initWithContainer_key_mutableSet_( NObjective.RuntimeObject container, NObjective.RuntimeObject key, NObjective.RuntimeObject mutableSet ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithContainer_key_mutableSet_( Handle, CachedSelectors.initWithContainer_key_mutableSet_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), container, key, mutableSet );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setValue_forKey_( NObjective.RuntimeObject value, NObjective.RuntimeObject forKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValue_forKey_( Handle, CachedSelectors.setValue_forKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, forKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject valueForKeyPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKeyPath_( Handle, CachedSelectors.valueForKeyPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithContainer_key_mutableSet_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject container, NObjective.RuntimeObject key, NObjective.RuntimeObject mutableSet );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKeyPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithContainer_key_mutableSet_ = "initWithContainer:key:mutableSet:";
			public static readonly Selector setValue_forKey_ = "setValue:forKey:";
			public static readonly Selector valueForKey_ = "valueForKey:";
			public static readonly Selector valueForKeyPath_ = "valueForKeyPath:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _NSPersistenceUtilities : IEquatable<_NSPersistenceUtilities> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSPersistenceUtilities;
		public static implicit operator NSObject( _NSPersistenceUtilities value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSPersistenceUtilities value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSPersistenceUtilities value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSPersistenceUtilities?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSPersistenceUtilities value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSPersistenceUtilities value1, _NSPersistenceUtilities value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSPersistenceUtilities value1, _NSPersistenceUtilities value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSPersistenceUtilities( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSPersistenceUtilities alloc() {
			return new _NSPersistenceUtilities( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static uint attributeTypeForXMLInfo_( NObjective.RuntimeObject info ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeTypeForXMLInfo_( ClassHandle, CachedSelectors.attributeTypeForXMLInfo_, out ___occuredException, sizeof( NObjective.RuntimeObject ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NObjective.RuntimeObject reverseEngineerModelFromXMLDataAt_( NObjective.RuntimeObject at ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.reverseEngineerModelFromXMLDataAt_( ClassHandle, CachedSelectors.reverseEngineerModelFromXMLDataAt_, out ___occuredException, sizeof( NObjective.RuntimeObject ), at );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint attributeTypeForXMLInfo_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr reverseEngineerModelFromXMLDataAt_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject at );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeTypeForXMLInfo_ = "attributeTypeForXMLInfo:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector reverseEngineerModelFromXMLDataAt_ = "reverseEngineerModelFromXMLDataAt:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( _NSNotifyingWrapperMutableSet ) )]
	public struct _NSProxyWrapperMutableSet : IEquatable<_NSProxyWrapperMutableSet> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSProxyWrapperMutableSet;
		public static implicit operator _NSNotifyingWrapperMutableSet( _NSProxyWrapperMutableSet value ) {
			return new _NSNotifyingWrapperMutableSet( value.Handle );
		}
		public static implicit operator NSMutableSet( _NSProxyWrapperMutableSet value ) {
			return new NSMutableSet( value.Handle );
		}
		public static implicit operator NSSet( _NSProxyWrapperMutableSet value ) {
			return new NSSet( value.Handle );
		}
		public static implicit operator NSObject( _NSProxyWrapperMutableSet value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSProxyWrapperMutableSet value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSProxyWrapperMutableSet value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSProxyWrapperMutableSet?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSProxyWrapperMutableSet value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSProxyWrapperMutableSet value1, _NSProxyWrapperMutableSet value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSProxyWrapperMutableSet value1, _NSProxyWrapperMutableSet value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSProxyWrapperMutableSet( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSProxyWrapperMutableSet alloc() {
			return new _NSProxyWrapperMutableSet( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject initWithContainer_key_mutableSet_mutationMethods_( NObjective.RuntimeObject container, NObjective.RuntimeObject key, NObjective.RuntimeObject mutableSet, NObjective.RuntimeObject mutationMethods ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithContainer_key_mutableSet_mutationMethods_( Handle, CachedSelectors.initWithContainer_key_mutableSet_mutationMethods_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), container, key, mutableSet, mutationMethods );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithContainer_key_mutableSet_mutationMethods_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject container, NObjective.RuntimeObject key, NObjective.RuntimeObject mutableSet, NObjective.RuntimeObject mutationMethods );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithContainer_key_mutableSet_mutationMethods_ = "initWithContainer:key:mutableSet:mutationMethods:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _NSSQLGenerator : IEquatable<_NSSQLGenerator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSSQLGenerator;
		public static implicit operator NSObject( _NSSQLGenerator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSSQLGenerator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSSQLGenerator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSSQLGenerator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSSQLGenerator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSSQLGenerator value1, _NSSQLGenerator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSSQLGenerator value1, _NSSQLGenerator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSSQLGenerator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSSQLGenerator alloc() {
			return new _NSSQLGenerator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject addJoinForDirectToManyToMany_( NObjective.RuntimeObject many ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.addJoinForDirectToManyToMany_( Handle, CachedSelectors.addJoinForDirectToManyToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ), many );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void addJoinForManyToManyRelationship_sourcePath_destinationPath_( NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourcePath, NObjective.RuntimeObject destinationPath ) {
			RuntimeObject ___occuredException;
			NativeMethods.addJoinForManyToManyRelationship_sourcePath_destinationPath_( Handle, CachedSelectors.addJoinForManyToManyRelationship_sourcePath_destinationPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), relationship, sourcePath, destinationPath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void addJoinForToManyRelationship_sourcePath_destinationPath_( NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourcePath, NObjective.RuntimeObject destinationPath ) {
			RuntimeObject ___occuredException;
			NativeMethods.addJoinForToManyRelationship_sourcePath_destinationPath_( Handle, CachedSelectors.addJoinForToManyRelationship_sourcePath_destinationPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), relationship, sourcePath, destinationPath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void addJoinForToOneRelationship_sourcePath_destinationPath_( NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourcePath, NObjective.RuntimeObject destinationPath ) {
			RuntimeObject ___occuredException;
			NativeMethods.addJoinForToOneRelationship_sourcePath_destinationPath_( Handle, CachedSelectors.addJoinForToOneRelationship_sourcePath_destinationPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), relationship, sourcePath, destinationPath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendClause_forKeyPath_allowToMany_( NObjective.RuntimeObject clause, NObjective.RuntimeObject forKeyPath, char allowToMany ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendClause_forKeyPath_allowToMany_( Handle, CachedSelectors.appendClause_forKeyPath_allowToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), clause, forKeyPath, allowToMany );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendClause_forKeyPathExpression_allowToMany_( NObjective.RuntimeObject clause, NObjective.RuntimeObject forKeyPathExpression, char allowToMany ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendClause_forKeyPathExpression_allowToMany_( Handle, CachedSelectors.appendClause_forKeyPathExpression_allowToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), clause, forKeyPathExpression, allowToMany );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendClause_forProperty_keypath_( NObjective.RuntimeObject clause, NObjective.RuntimeObject forProperty, NObjective.RuntimeObject keypath ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendClause_forProperty_keypath_( Handle, CachedSelectors.appendClause_forProperty_keypath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), clause, forProperty, keypath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendCountClause_forToManyKeyPath_( NObjective.RuntimeObject clause, NObjective.RuntimeObject forToManyKeyPath ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendCountClause_forToManyKeyPath_( Handle, CachedSelectors.appendCountClause_forToManyKeyPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), clause, forToManyKeyPath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendJoinClauseToSQL() {
			RuntimeObject ___occuredException;
			NativeMethods.appendJoinClauseToSQL( Handle, CachedSelectors.appendJoinClauseToSQL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendLimitClauseToSQL_( uint sql ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendLimitClauseToSQL_( Handle, CachedSelectors.appendLimitClauseToSQL_, out ___occuredException, sizeof( uint ), sql );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendOrderByClauseToSQL() {
			RuntimeObject ___occuredException;
			NativeMethods.appendOrderByClauseToSQL( Handle, CachedSelectors.appendOrderByClauseToSQL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendSelectListToSQLForRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendSelectListToSQLForRequest_( Handle, CachedSelectors.appendSelectListToSQLForRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendSQL_( NObjective.RuntimeObject sql ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendSQL_( Handle, CachedSelectors.appendSQL_, out ___occuredException, sizeof( NObjective.RuntimeObject ), sql );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendWhereClause_( NObjective.RuntimeObject clause ) {
			RuntimeObject ___occuredException;
			NativeMethods.appendWhereClause_( Handle, CachedSelectors.appendWhereClause_, out ___occuredException, sizeof( NObjective.RuntimeObject ), clause );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void appendWhereClauseToSQL() {
			RuntimeObject ___occuredException;
			NativeMethods.appendWhereClauseToSQL( Handle, CachedSelectors.appendWhereClauseToSQL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char autoDistinct() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.autoDistinct( Handle, CachedSelectors.autoDistinct, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void buildOrderByClauseWithSortDescriptors_( NObjective.RuntimeObject descriptors ) {
			RuntimeObject ___occuredException;
			NativeMethods.buildOrderByClauseWithSortDescriptors_( Handle, CachedSelectors.buildOrderByClauseWithSortDescriptors_, out ___occuredException, sizeof( NObjective.RuntimeObject ), descriptors );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void buildWhereClauseForRow_optLock_( NObjective.RuntimeObject row, long optLock ) {
			RuntimeObject ___occuredException;
			NativeMethods.buildWhereClauseForRow_optLock_( Handle, CachedSelectors.buildWhereClauseForRow_optLock_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( long ), row, optLock );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void buildWhereClauseWithSelectPredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			NativeMethods.buildWhereClauseWithSelectPredicate_( Handle, CachedSelectors.buildWhereClauseWithSelectPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void buildWhereClauseWithSimplePredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			NativeMethods.buildWhereClauseWithSimplePredicate_( Handle, CachedSelectors.buildWhereClauseWithSimplePredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char foldComparisonPredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foldComparisonPredicate_( Handle, CachedSelectors.foldComparisonPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject initWithStatement_forAdapter_( NObjective.RuntimeObject statement, NObjective.RuntimeObject forAdapter ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithStatement_forAdapter_( Handle, CachedSelectors.initWithStatement_forAdapter_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), statement, forAdapter );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public bool isToManyCountKeyPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isToManyCountKeyPath_( Handle, CachedSelectors.isToManyCountKeyPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void prepareBeginsWith_( NObjective.RuntimeObject with ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareBeginsWith_( Handle, CachedSelectors.prepareBeginsWith_, out ___occuredException, sizeof( NObjective.RuntimeObject ), with );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareBetween_( NObjective.RuntimeObject between ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareBetween_( Handle, CachedSelectors.prepareBetween_, out ___occuredException, sizeof( NObjective.RuntimeObject ), between );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareComparisonPredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareComparisonPredicate_( Handle, CachedSelectors.prepareComparisonPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareCountStatementWithFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareCountStatementWithFetchRequest_( Handle, CachedSelectors.prepareCountStatementWithFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareDeleteStatementWithCorrelation_( NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareDeleteStatementWithCorrelation_( Handle, CachedSelectors.prepareDeleteStatementWithCorrelation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareDeleteStatementWithRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareDeleteStatementWithRow_( Handle, CachedSelectors.prepareDeleteStatementWithRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareEndsWith_( NObjective.RuntimeObject with ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareEndsWith_( Handle, CachedSelectors.prepareEndsWith_, out ___occuredException, sizeof( NObjective.RuntimeObject ), with );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareIn_swap_( NObjective.RuntimeObject @in, char swap ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareIn_swap_( Handle, CachedSelectors.prepareIn_swap_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ), @in, swap );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareInsertStatementWithCorrelation_( NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareInsertStatementWithCorrelation_( Handle, CachedSelectors.prepareInsertStatementWithCorrelation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareInsertStatementWithRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareInsertStatementWithRow_( Handle, CachedSelectors.prepareInsertStatementWithRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareLike_( NObjective.RuntimeObject like ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareLike_( Handle, CachedSelectors.prepareLike_, out ___occuredException, sizeof( NObjective.RuntimeObject ), like );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareMatches_( NObjective.RuntimeObject matches ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareMatches_( Handle, CachedSelectors.prepareMatches_, out ___occuredException, sizeof( NObjective.RuntimeObject ), matches );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareSelectStatementWithFetchRequest_ignoreInheritance_( NObjective.RuntimeObject request, char ignoreInheritance ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareSelectStatementWithFetchRequest_ignoreInheritance_( Handle, CachedSelectors.prepareSelectStatementWithFetchRequest_ignoreInheritance_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ), request, ignoreInheritance );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareUpdateStatementWithRow_originalRow_( NObjective.RuntimeObject row, NObjective.RuntimeObject originalRow ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareUpdateStatementWithRow_originalRow_( Handle, CachedSelectors.prepareUpdateStatementWithRow_originalRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), row, originalRow );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setAutoDistinct_( char distinct ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAutoDistinct_( Handle, CachedSelectors.setAutoDistinct_, out ___occuredException, sizeof( char ), distinct );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sqlString() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlString( Handle, CachedSelectors.sqlString, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint sqlTypeForExpressionConstantValue_( NObjective.RuntimeObject value ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlTypeForExpressionConstantValue_( Handle, CachedSelectors.sqlTypeForExpressionConstantValue_, out ___occuredException, sizeof( NObjective.RuntimeObject ), value );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint sqlTypeForPropertyAtEndOfKeyPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlTypeForPropertyAtEndOfKeyPath_( Handle, CachedSelectors.sqlTypeForPropertyAtEndOfKeyPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject whereClause() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.whereClause( Handle, CachedSelectors.whereClause, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr addJoinForDirectToManyToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addJoinForManyToManyRelationship_sourcePath_destinationPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourcePath, NObjective.RuntimeObject destinationPath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addJoinForToManyRelationship_sourcePath_destinationPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourcePath, NObjective.RuntimeObject destinationPath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addJoinForToOneRelationship_sourcePath_destinationPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourcePath, NObjective.RuntimeObject destinationPath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendClause_forKeyPath_allowToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject clause, NObjective.RuntimeObject forKeyPath, char allowToMany );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendClause_forKeyPathExpression_allowToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject clause, NObjective.RuntimeObject forKeyPathExpression, char allowToMany );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendClause_forProperty_keypath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject clause, NObjective.RuntimeObject forProperty, NObjective.RuntimeObject keypath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendCountClause_forToManyKeyPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject clause, NObjective.RuntimeObject forToManyKeyPath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendJoinClauseToSQL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendLimitClauseToSQL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint sql );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendOrderByClauseToSQL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendSelectListToSQLForRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendSQL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject sql );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendWhereClause_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject clause );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void appendWhereClauseToSQL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char autoDistinct( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void buildOrderByClauseWithSortDescriptors_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject descriptors );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void buildWhereClauseForRow_optLock_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row, long optLock );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void buildWhereClauseWithSelectPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void buildWhereClauseWithSimplePredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char foldComparisonPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithStatement_forAdapter_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement, NObjective.RuntimeObject forAdapter );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isToManyCountKeyPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareBeginsWith_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject with );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareBetween_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject between );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareComparisonPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareCountStatementWithFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareDeleteStatementWithCorrelation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareDeleteStatementWithRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareEndsWith_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject with );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareIn_swap_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @in, char swap );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareInsertStatementWithCorrelation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareInsertStatementWithRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareLike_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject like );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareMatches_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject matches );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareSelectStatementWithFetchRequest_ignoreInheritance_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, char ignoreInheritance );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareUpdateStatementWithRow_originalRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row, NObjective.RuntimeObject originalRow );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAutoDistinct_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char distinct );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlString( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint sqlTypeForExpressionConstantValue_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint sqlTypeForPropertyAtEndOfKeyPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr whereClause( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector addJoinForDirectToManyToMany_ = "addJoinForDirectToManyToMany:";
			public static readonly Selector addJoinForManyToManyRelationship_sourcePath_destinationPath_ = "addJoinForManyToManyRelationship:sourcePath:destinationPath:";
			public static readonly Selector addJoinForToManyRelationship_sourcePath_destinationPath_ = "addJoinForToManyRelationship:sourcePath:destinationPath:";
			public static readonly Selector addJoinForToOneRelationship_sourcePath_destinationPath_ = "addJoinForToOneRelationship:sourcePath:destinationPath:";
			public static readonly Selector appendClause_forKeyPath_allowToMany_ = "appendClause:forKeyPath:allowToMany:";
			public static readonly Selector appendClause_forKeyPathExpression_allowToMany_ = "appendClause:forKeyPathExpression:allowToMany:";
			public static readonly Selector appendClause_forProperty_keypath_ = "appendClause:forProperty:keypath:";
			public static readonly Selector appendCountClause_forToManyKeyPath_ = "appendCountClause:forToManyKeyPath:";
			public static readonly Selector appendJoinClauseToSQL = "appendJoinClauseToSQL";
			public static readonly Selector appendLimitClauseToSQL_ = "appendLimitClauseToSQL:";
			public static readonly Selector appendOrderByClauseToSQL = "appendOrderByClauseToSQL";
			public static readonly Selector appendSelectListToSQLForRequest_ = "appendSelectListToSQLForRequest:";
			public static readonly Selector appendSQL_ = "appendSQL:";
			public static readonly Selector appendWhereClause_ = "appendWhereClause:";
			public static readonly Selector appendWhereClauseToSQL = "appendWhereClauseToSQL";
			public static readonly Selector autoDistinct = "autoDistinct";
			public static readonly Selector buildOrderByClauseWithSortDescriptors_ = "buildOrderByClauseWithSortDescriptors:";
			public static readonly Selector buildWhereClauseForRow_optLock_ = "buildWhereClauseForRow:optLock:";
			public static readonly Selector buildWhereClauseWithSelectPredicate_ = "buildWhereClauseWithSelectPredicate:";
			public static readonly Selector buildWhereClauseWithSimplePredicate_ = "buildWhereClauseWithSimplePredicate:";
			public static readonly Selector foldComparisonPredicate_ = "foldComparisonPredicate:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithStatement_forAdapter_ = "initWithStatement:forAdapter:";
			public static readonly Selector isToManyCountKeyPath_ = "isToManyCountKeyPath:";
			public static readonly Selector prepareBeginsWith_ = "prepareBeginsWith:";
			public static readonly Selector prepareBetween_ = "prepareBetween:";
			public static readonly Selector prepareComparisonPredicate_ = "prepareComparisonPredicate:";
			public static readonly Selector prepareCountStatementWithFetchRequest_ = "prepareCountStatementWithFetchRequest:";
			public static readonly Selector prepareDeleteStatementWithCorrelation_ = "prepareDeleteStatementWithCorrelation:";
			public static readonly Selector prepareDeleteStatementWithRow_ = "prepareDeleteStatementWithRow:";
			public static readonly Selector prepareEndsWith_ = "prepareEndsWith:";
			public static readonly Selector prepareIn_swap_ = "prepareIn:swap:";
			public static readonly Selector prepareInsertStatementWithCorrelation_ = "prepareInsertStatementWithCorrelation:";
			public static readonly Selector prepareInsertStatementWithRow_ = "prepareInsertStatementWithRow:";
			public static readonly Selector prepareLike_ = "prepareLike:";
			public static readonly Selector prepareMatches_ = "prepareMatches:";
			public static readonly Selector prepareSelectStatementWithFetchRequest_ignoreInheritance_ = "prepareSelectStatementWithFetchRequest:ignoreInheritance:";
			public static readonly Selector prepareUpdateStatementWithRow_originalRow_ = "prepareUpdateStatementWithRow:originalRow:";
			public static readonly Selector setAutoDistinct_ = "setAutoDistinct:";
			public static readonly Selector sqlString = "sqlString";
			public static readonly Selector sqlTypeForExpressionConstantValue_ = "sqlTypeForExpressionConstantValue:";
			public static readonly Selector sqlTypeForPropertyAtEndOfKeyPath_ = "sqlTypeForPropertyAtEndOfKeyPath:";
			public static readonly Selector whereClause = "whereClause";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSTemporaryObjectID ) )]
	public struct _NSTemporaryObjectID2 : IEquatable<_NSTemporaryObjectID2> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._NSTemporaryObjectID2;
		public static implicit operator NSTemporaryObjectID( _NSTemporaryObjectID2 value ) {
			return new NSTemporaryObjectID( value.Handle );
		}
		public static implicit operator NSManagedObjectID( _NSTemporaryObjectID2 value ) {
			return new NSManagedObjectID( value.Handle );
		}
		public static implicit operator NSObject( _NSTemporaryObjectID2 value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _NSTemporaryObjectID2 value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _NSTemporaryObjectID2 value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _NSTemporaryObjectID2?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _NSTemporaryObjectID2 value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _NSTemporaryObjectID2 value1, _NSTemporaryObjectID2 value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _NSTemporaryObjectID2 value1, _NSTemporaryObjectID2 value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _NSTemporaryObjectID2( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _NSTemporaryObjectID2 alloc() {
			return new _NSTemporaryObjectID2( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSArray ) )]
	public struct _PFArray : IEquatable<_PFArray> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFArray;
		public static implicit operator NSArray( _PFArray value ) {
			return new NSArray( value.Handle );
		}
		public static implicit operator NSObject( _PFArray value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFArray value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFArray value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFArray?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFArray value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFArray value1, _PFArray value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFArray value1, _PFArray value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFArray( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFArray alloc() {
			return new _PFArray( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject initWithObjects_count_( System.IntPtr objects, uint count ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithObjects_count_( Handle, CachedSelectors.initWithObjects_count_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( uint ), objects, count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject initWithObjects_count_andFlags_( System.IntPtr objects, uint count, uint andFlags ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithObjects_count_andFlags_( Handle, CachedSelectors.initWithObjects_count_andFlags_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( uint ) + sizeof( uint ), objects, count, andFlags );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithObjects_count_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr objects, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithObjects_count_andFlags_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr objects, uint count, uint andFlags );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithObjects_count_ = "initWithObjects:count:";
			public static readonly Selector initWithObjects_count_andFlags_ = "initWithObjects:count:andFlags:";
			public static readonly Selector release = "release";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _PFContextMapTable : IEquatable<_PFContextMapTable> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFContextMapTable;
		public static implicit operator NSObject( _PFContextMapTable value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFContextMapTable value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFContextMapTable value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFContextMapTable?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFContextMapTable value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFContextMapTable value1, _PFContextMapTable value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFContextMapTable value1, _PFContextMapTable value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFContextMapTable( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFContextMapTable alloc() {
			return new _PFContextMapTable( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void clearTemporaryIDs() {
			RuntimeObject ___occuredException;
			NativeMethods.clearTemporaryIDs( Handle, CachedSelectors.clearTemporaryIDs, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint getAllObjects_( System.IntPtr objects ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getAllObjects_( Handle, CachedSelectors.getAllObjects_, out ___occuredException, sizeof( System.IntPtr ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject initWithWeaksReferences_( char references ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithWeaksReferences_( Handle, CachedSelectors.initWithWeaksReferences_, out ___occuredException, sizeof( char ), references );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setCapacityHint_forSlot_( uint hint, uint forSlot ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCapacityHint_forSlot_( Handle, CachedSelectors.setCapacityHint_forSlot_, out ___occuredException, sizeof( uint ) + sizeof( uint ), hint, forSlot );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setForUseWithModel_( NObjective.RuntimeObject model ) {
			RuntimeObject ___occuredException;
			NativeMethods.setForUseWithModel_( Handle, CachedSelectors.setForUseWithModel_, out ___occuredException, sizeof( NObjective.RuntimeObject ), model );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void clearTemporaryIDs( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint getAllObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithWeaksReferences_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char references );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCapacityHint_forSlot_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint hint, uint forSlot );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setForUseWithModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model );
		}
		static internal class CachedSelectors {
			public static readonly Selector clearTemporaryIDs = "clearTemporaryIDs";
			public static readonly Selector getAllObjects_ = "getAllObjects:";
			public static readonly Selector initWithWeaksReferences_ = "initWithWeaksReferences:";
			public static readonly Selector setCapacityHint_forSlot_ = "setCapacityHint:forSlot:";
			public static readonly Selector setForUseWithModel_ = "setForUseWithModel:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _PFLock : IEquatable<_PFLock> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFLock;
		public static implicit operator NSObject( _PFLock value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFLock value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFLock value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFLock?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFLock value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFLock value1, _PFLock value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFLock value1, _PFLock value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFLock( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFLock alloc() {
			return new _PFLock( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void @lock() {
			RuntimeObject ___occuredException;
			NativeMethods.@lock( Handle, CachedSelectors.@lock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char tryLock() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.tryLock( Handle, CachedSelectors.tryLock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void unlock() {
			RuntimeObject ___occuredException;
			NativeMethods.unlock( Handle, CachedSelectors.unlock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void @lock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char tryLock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void unlock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initialize = "initialize";
			public static readonly Selector @lock = "lock";
			public static readonly Selector tryLock = "tryLock";
			public static readonly Selector unlock = "unlock";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _PFManagedObjectReferenceQueue : IEquatable<_PFManagedObjectReferenceQueue> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFManagedObjectReferenceQueue;
		public static implicit operator NSObject( _PFManagedObjectReferenceQueue value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFManagedObjectReferenceQueue value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFManagedObjectReferenceQueue value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFManagedObjectReferenceQueue?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFManagedObjectReferenceQueue value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFManagedObjectReferenceQueue value1, _PFManagedObjectReferenceQueue value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFManagedObjectReferenceQueue value1, _PFManagedObjectReferenceQueue value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFManagedObjectReferenceQueue( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFManagedObjectReferenceQueue alloc() {
			return new _PFManagedObjectReferenceQueue( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject initForContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForContext_( Handle, CachedSelectors.initForContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initForContext_ = "initForContext:";
			public static readonly Selector release = "release";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _PFRoutines : IEquatable<_PFRoutines> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFRoutines;
		public static implicit operator NSObject( _PFRoutines value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFRoutines value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFRoutines value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFRoutines?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFRoutines value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFRoutines value1, _PFRoutines value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFRoutines value1, _PFRoutines value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFRoutines( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFRoutines alloc() {
			return new _PFRoutines( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static System.IntPtr allocateVirtualMemory_( uint memory ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allocateVirtualMemory_( ClassHandle, CachedSelectors.allocateVirtualMemory_, out ___occuredException, sizeof( uint ), memory );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static char convertCString_toUnsignedInt64_withBase_( System.IntPtr @string, System.IntPtr toUnsignedInt64, int withBase ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.convertCString_toUnsignedInt64_withBase_( ClassHandle, CachedSelectors.convertCString_toUnsignedInt64_withBase_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( System.IntPtr ) + sizeof( int ), @string, toUnsignedInt64, withBase );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeObject escapeInvalidXMLCharactersInString_( NObjective.RuntimeObject @string ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.escapeInvalidXMLCharactersInString_( ClassHandle, CachedSelectors.escapeInvalidXMLCharactersInString_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @string );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static void freeVirtualMemory_forSize_( System.IntPtr memory, uint forSize ) {
			RuntimeObject ___occuredException;
			NativeMethods.freeVirtualMemory_forSize_( ClassHandle, CachedSelectors.freeVirtualMemory_forSize_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( uint ), memory, forSize );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NObjective.RuntimeObject invalidXMLCharacterSet() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.invalidXMLCharacterSet( ClassHandle, CachedSelectors.invalidXMLCharacterSet, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static bool isInvalidXMLCharacter_( ushort character ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isInvalidXMLCharacter_( ClassHandle, CachedSelectors.isInvalidXMLCharacter_, out ___occuredException, sizeof( ushort ), character );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeObject revertInvalidXMLEscapedString_( NObjective.RuntimeObject @string ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.revertInvalidXMLEscapedString_( ClassHandle, CachedSelectors.revertInvalidXMLEscapedString_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @string );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static NObjective.RuntimeObject simpleNodesFromXMLDocument_atPath_( NObjective.RuntimeObject document, NObjective.RuntimeObject atPath ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.simpleNodesFromXMLDocument_atPath_( ClassHandle, CachedSelectors.simpleNodesFromXMLDocument_atPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), document, atPath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr allocateVirtualMemory_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint memory );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char convertCString_toUnsignedInt64_withBase_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr @string, System.IntPtr toUnsignedInt64, int withBase );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr escapeInvalidXMLCharactersInString_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @string );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void freeVirtualMemory_forSize_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr memory, uint forSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr invalidXMLCharacterSet( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isInvalidXMLCharacter_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ushort character );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr revertInvalidXMLEscapedString_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @string );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr simpleNodesFromXMLDocument_atPath_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject document, NObjective.RuntimeObject atPath );
		}
		static internal class CachedSelectors {
			public static readonly Selector allocateVirtualMemory_ = "allocateVirtualMemory:";
			public static readonly Selector convertCString_toUnsignedInt64_withBase_ = "convertCString:toUnsignedInt64:withBase:";
			public static readonly Selector escapeInvalidXMLCharactersInString_ = "escapeInvalidXMLCharactersInString:";
			public static readonly Selector freeVirtualMemory_forSize_ = "freeVirtualMemory:forSize:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector invalidXMLCharacterSet = "invalidXMLCharacterSet";
			public static readonly Selector isInvalidXMLCharacter_ = "isInvalidXMLCharacter:";
			public static readonly Selector revertInvalidXMLEscapedString_ = "revertInvalidXMLEscapedString:";
			public static readonly Selector simpleNodesFromXMLDocument_atPath_ = "simpleNodesFromXMLDocument:atPath:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _PFTask : IEquatable<_PFTask> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFTask;
		public static implicit operator NSObject( _PFTask value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFTask value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFTask value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFTask?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFTask value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFTask value1, _PFTask value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFTask value1, _PFTask value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFTask( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFTask alloc() {
			return new _PFTask( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static int getNumActiveProcessors() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getNumActiveProcessors( ClassHandle, CachedSelectors.getNumActiveProcessors, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static ulong getPhysicalMemory() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getPhysicalMemory( ClassHandle, CachedSelectors.getPhysicalMemory, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static double getProcessorSpeed() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getProcessorSpeed( ClassHandle, CachedSelectors.getProcessorSpeed, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int getNumActiveProcessors( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern ulong getPhysicalMemory( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_fpret_eh2" )]
			public static extern double getProcessorSpeed( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector getNumActiveProcessors = "getNumActiveProcessors";
			public static readonly Selector getPhysicalMemory = "getPhysicalMemory";
			public static readonly Selector getProcessorSpeed = "getProcessorSpeed";
			public static readonly Selector release = "release";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct _PFWeakReference : IEquatable<_PFWeakReference> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses._PFWeakReference;
		public static implicit operator NSObject( _PFWeakReference value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( _PFWeakReference value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( _PFWeakReference value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as _PFWeakReference?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( _PFWeakReference value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( _PFWeakReference value1, _PFWeakReference value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( _PFWeakReference value1, _PFWeakReference value2 ) {
			return value1.Handle != value2.Handle;
		}
		public _PFWeakReference( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static _PFWeakReference alloc() {
			return new _PFWeakReference( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject initWithPointer_( System.IntPtr pointer ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithPointer_( Handle, CachedSelectors.initWithPointer_, out ___occuredException, sizeof( System.IntPtr ), pointer );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public System.IntPtr pointer() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.pointer( Handle, CachedSelectors.pointer, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPointer_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr pointer );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr pointer( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithPointer_ = "initWithPointer:";
			public static readonly Selector pointer = "pointer";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStore ) )]
	public struct NSAtomicStore : IEquatable<NSAtomicStore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSAtomicStore;
		public static implicit operator NSPersistentStore( NSAtomicStore value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSAtomicStore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSAtomicStore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSAtomicStore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSAtomicStore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSAtomicStore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSAtomicStore value1, NSAtomicStore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSAtomicStore value1, NSAtomicStore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSAtomicStore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSAtomicStore alloc() {
			return new NSAtomicStore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void addCacheNodes_( NSSet nodes ) {
			RuntimeObject ___occuredException;
			NativeMethods.addCacheNodes_( Handle, CachedSelectors.addCacheNodes_, out ___occuredException, sizeof( NSSet ), nodes );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSAtomicStoreCacheNode cacheNodeForObjectID_( NSManagedObjectID id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.cacheNodeForObjectID_( Handle, CachedSelectors.cacheNodeForObjectID_, out ___occuredException, sizeof( NSManagedObjectID ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSAtomicStoreCacheNode( ___result );
		}
		unsafe public NSSet cacheNodes() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.cacheNodes( Handle, CachedSelectors.cacheNodes, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSet( ___result );
		}
		unsafe public NObjective.RuntimeObject executeCountRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeCountRequest_withContext_( Handle, CachedSelectors.executeCountRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject executeFetchRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeFetchRequest_withContext_( Handle, CachedSelectors.executeFetchRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject executeRefreshRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeRefreshRequest_withContext_( Handle, CachedSelectors.executeRefreshRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject executeSaveChangesRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeSaveChangesRequest_withContext_( Handle, CachedSelectors.executeSaveChangesRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSAtomicStoreCacheNode newCacheNodeForManagedObject_( NSManagedObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCacheNodeForManagedObject_( Handle, CachedSelectors.newCacheNodeForManagedObject_, out ___occuredException, sizeof( NSManagedObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSAtomicStoreCacheNode( ___result );
		}
		unsafe public NObjective.RuntimeObject newReferenceObjectForManagedObject_( NSManagedObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newReferenceObjectForManagedObject_( Handle, CachedSelectors.newReferenceObjectForManagedObject_, out ___occuredException, sizeof( NSManagedObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSManagedObjectID objectIDForEntity_referenceObject_( NSEntityDescription entity, NObjective.RuntimeObject referenceObject ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectIDForEntity_referenceObject_( Handle, CachedSelectors.objectIDForEntity_referenceObject_, out ___occuredException, sizeof( NSEntityDescription ) + sizeof( NObjective.RuntimeObject ), entity, referenceObject );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectID( ___result );
		}
		unsafe public NObjective.RuntimeObject referenceObjectForObjectID_( NSManagedObjectID id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.referenceObjectForObjectID_( Handle, CachedSelectors.referenceObjectForObjectID_, out ___occuredException, sizeof( NSManagedObjectID ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public bool save_( ref NSError save ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.save_( Handle, CachedSelectors.save_, out ___occuredException, sizeof( IntPtr ), ref save );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void updateCacheNode_fromManagedObject_( NSAtomicStoreCacheNode node, NSManagedObject fromManagedObject ) {
			RuntimeObject ___occuredException;
			NativeMethods.updateCacheNode_fromManagedObject_( Handle, CachedSelectors.updateCacheNode_fromManagedObject_, out ___occuredException, sizeof( NSAtomicStoreCacheNode ) + sizeof( NSManagedObject ), node, fromManagedObject );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willRemoveCacheNodes_( NSSet nodes ) {
			RuntimeObject ___occuredException;
			NativeMethods.willRemoveCacheNodes_( Handle, CachedSelectors.willRemoveCacheNodes_, out ___occuredException, sizeof( NSSet ), nodes );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addCacheNodes_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSSet nodes );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr cacheNodeForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectID id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr cacheNodes( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeCountRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeFetchRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeRefreshRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeSaveChangesRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCacheNodeForManagedObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newReferenceObjectForManagedObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectIDForEntity_referenceObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityDescription entity, NObjective.RuntimeObject referenceObject );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr referenceObjectForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectID id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool save_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ref NSError save );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void updateCacheNode_fromManagedObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSAtomicStoreCacheNode node, NSManagedObject fromManagedObject );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willRemoveCacheNodes_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSSet nodes );
		}
		static internal class CachedSelectors {
			public static readonly Selector addCacheNodes_ = "addCacheNodes:";
			public static readonly Selector cacheNodeForObjectID_ = "cacheNodeForObjectID:";
			public static readonly Selector cacheNodes = "cacheNodes";
			public static readonly Selector executeCountRequest_withContext_ = "executeCountRequest:withContext:";
			public static readonly Selector executeFetchRequest_withContext_ = "executeFetchRequest:withContext:";
			public static readonly Selector executeRefreshRequest_withContext_ = "executeRefreshRequest:withContext:";
			public static readonly Selector executeSaveChangesRequest_withContext_ = "executeSaveChangesRequest:withContext:";
			public static readonly Selector newCacheNodeForManagedObject_ = "newCacheNodeForManagedObject:";
			public static readonly Selector newReferenceObjectForManagedObject_ = "newReferenceObjectForManagedObject:";
			public static readonly Selector objectIDForEntity_referenceObject_ = "objectIDForEntity:referenceObject:";
			public static readonly Selector referenceObjectForObjectID_ = "referenceObjectForObjectID:";
			public static readonly Selector save_ = "save:";
			public static readonly Selector updateCacheNode_fromManagedObject_ = "updateCacheNode:fromManagedObject:";
			public static readonly Selector willRemoveCacheNodes_ = "willRemoveCacheNodes:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSAtomicStoreCacheNode : IEquatable<NSAtomicStoreCacheNode> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSAtomicStoreCacheNode;
		public static implicit operator NSObject( NSAtomicStoreCacheNode value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSAtomicStoreCacheNode value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSAtomicStoreCacheNode value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSAtomicStoreCacheNode?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSAtomicStoreCacheNode value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSAtomicStoreCacheNode value1, NSAtomicStoreCacheNode value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSAtomicStoreCacheNode value1, NSAtomicStoreCacheNode value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSAtomicStoreCacheNode( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSAtomicStoreCacheNode alloc() {
			return new NSAtomicStoreCacheNode( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSAtomicStoreCacheNode initWithObjectID_( NSManagedObjectID id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithObjectID_( Handle, CachedSelectors.initWithObjectID_, out ___occuredException, sizeof( NSManagedObjectID ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSAtomicStoreCacheNode( ___result );
		}
		unsafe public System.IntPtr knownKeyValuesPointer() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.knownKeyValuesPointer( Handle, CachedSelectors.knownKeyValuesPointer, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSManagedObjectID objectID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectID( Handle, CachedSelectors.objectID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectID( ___result );
		}
		unsafe public NSMutableDictionary propertyCache() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertyCache( Handle, CachedSelectors.propertyCache, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMutableDictionary( ___result );
		}
		unsafe public void setPropertyCache_( NSMutableDictionary cache ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPropertyCache_( Handle, CachedSelectors.setPropertyCache_, out ___occuredException, sizeof( NSMutableDictionary ), cache );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValue_forKey_( NObjective.RuntimeObject value, string forKey ) {
			RuntimeObject ___occuredException;
			var ___wrappedforKey = Runtime.CreateStringProxy( forKey );
			NativeMethods.setValue_forKey_( Handle, CachedSelectors.setValue_forKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( IntPtr ), value, ___wrappedforKey );
			Runtime.ReleaseNativeObject( ___wrappedforKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectID id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr knownKeyValuesPointer( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr propertyCache( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPropertyCache_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSMutableDictionary cache );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, IntPtr forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithObjectID_ = "initWithObjectID:";
			public static readonly Selector knownKeyValuesPointer = "knownKeyValuesPointer";
			public static readonly Selector objectID = "objectID";
			public static readonly Selector propertyCache = "propertyCache";
			public static readonly Selector setPropertyCache_ = "setPropertyCache:";
			public static readonly Selector setValue_forKey_ = "setValue:forKey:";
			public static readonly Selector valueForKey_ = "valueForKey:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPropertyDescription ) )]
	public struct NSAttributeDescription : IEquatable<NSAttributeDescription> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSAttributeDescription;
		public static implicit operator NSPropertyDescription( NSAttributeDescription value ) {
			return new NSPropertyDescription( value.Handle );
		}
		public static implicit operator NSObject( NSAttributeDescription value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSAttributeDescription value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSAttributeDescription value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSAttributeDescription?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSAttributeDescription value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSAttributeDescription value1, NSAttributeDescription value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSAttributeDescription value1, NSAttributeDescription value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSAttributeDescription( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSAttributeDescription alloc() {
			return new NSAttributeDescription( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSAttributeType attributeType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeType( Handle, CachedSelectors.attributeType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( NSAttributeType ) ___result;
		}
		unsafe public string attributeValueClassName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeValueClassName( Handle, CachedSelectors.attributeValueClassName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NObjective.RuntimeObject defaultValue() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.defaultValue( Handle, CachedSelectors.defaultValue, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setAttributeType_( NSAttributeType type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAttributeType_( Handle, CachedSelectors.setAttributeType_, out ___occuredException, sizeof( NSAttributeType ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setAttributeValueClassName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setAttributeValueClassName_( Handle, CachedSelectors.setAttributeValueClassName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDefaultValue_( NObjective.RuntimeObject value ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDefaultValue_( Handle, CachedSelectors.setDefaultValue_, out ___occuredException, sizeof( NObjective.RuntimeObject ), value );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValueTransformerName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setValueTransformerName_( Handle, CachedSelectors.setValueTransformerName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public string valueTransformerName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueTransformerName( Handle, CachedSelectors.valueTransformerName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint attributeType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeValueClassName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr defaultValue( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAttributeType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSAttributeType type );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAttributeValueClassName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDefaultValue_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValueTransformerName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueTransformerName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeType = "attributeType";
			public static readonly Selector attributeValueClassName = "attributeValueClassName";
			public static readonly Selector defaultValue = "defaultValue";
			public static readonly Selector setAttributeType_ = "setAttributeType:";
			public static readonly Selector setAttributeValueClassName_ = "setAttributeValueClassName:";
			public static readonly Selector setDefaultValue_ = "setDefaultValue:";
			public static readonly Selector setValueTransformerName_ = "setValueTransformerName:";
			public static readonly Selector valueTransformerName = "valueTransformerName";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPropertyStoreMapping ) )]
	public struct NSAttributeStoreMapping : IEquatable<NSAttributeStoreMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSAttributeStoreMapping;
		public static implicit operator NSPropertyStoreMapping( NSAttributeStoreMapping value ) {
			return new NSPropertyStoreMapping( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSAttributeStoreMapping value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSAttributeStoreMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSAttributeStoreMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSAttributeStoreMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSAttributeStoreMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSAttributeStoreMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSAttributeStoreMapping value1, NSAttributeStoreMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSAttributeStoreMapping value1, NSAttributeStoreMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSAttributeStoreMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSAttributeStoreMapping alloc() {
			return new NSAttributeStoreMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject attribute() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attribute( Handle, CachedSelectors.attribute, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject columnDefinition() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.columnDefinition( Handle, CachedSelectors.columnDefinition, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint externalPrecision() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalPrecision( Handle, CachedSelectors.externalPrecision, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public int externalScale() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalScale( Handle, CachedSelectors.externalScale, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public int externalType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalType( Handle, CachedSelectors.externalType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setExternalPrecision_( uint precision ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExternalPrecision_( Handle, CachedSelectors.setExternalPrecision_, out ___occuredException, sizeof( uint ), precision );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setExternalScale_( int scale ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExternalScale_( Handle, CachedSelectors.setExternalScale_, out ___occuredException, sizeof( int ), scale );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setExternalType_( int type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExternalType_( Handle, CachedSelectors.setExternalType_, out ___occuredException, sizeof( int ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sqlType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlType( Handle, CachedSelectors.sqlType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attribute( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr columnDefinition( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint externalPrecision( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int externalScale( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int externalType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExternalPrecision_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint precision );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExternalScale_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int scale );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExternalType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int type );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attribute = "attribute";
			public static readonly Selector columnDefinition = "columnDefinition";
			public static readonly Selector externalPrecision = "externalPrecision";
			public static readonly Selector externalScale = "externalScale";
			public static readonly Selector externalType = "externalType";
			public static readonly Selector setExternalPrecision_ = "setExternalPrecision:";
			public static readonly Selector setExternalScale_ = "setExternalScale:";
			public static readonly Selector setExternalType_ = "setExternalType:";
			public static readonly Selector sqlType = "sqlType";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( _NSCoreManagedObjectID ) )]
	public struct NSBasicObjectID : IEquatable<NSBasicObjectID> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSBasicObjectID;
		public static implicit operator _NSCoreManagedObjectID( NSBasicObjectID value ) {
			return new _NSCoreManagedObjectID( value.Handle );
		}
		public static implicit operator NSManagedObjectID( NSBasicObjectID value ) {
			return new NSManagedObjectID( value.Handle );
		}
		public static implicit operator NSObject( NSBasicObjectID value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSBasicObjectID value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSBasicObjectID value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSBasicObjectID?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSBasicObjectID value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSBasicObjectID value1, NSBasicObjectID value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSBasicObjectID value1, NSBasicObjectID value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSBasicObjectID( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSBasicObjectID alloc() {
			return new NSBasicObjectID( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSBasicObjectID initWithObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithObject_( Handle, CachedSelectors.initWithObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSBasicObjectID( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithObject_ = "initWithObject:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( _NSCoreManagedObjectID ) )]
	public struct NSBasicObjectID64 : IEquatable<NSBasicObjectID64> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSBasicObjectID64;
		public static implicit operator _NSCoreManagedObjectID( NSBasicObjectID64 value ) {
			return new _NSCoreManagedObjectID( value.Handle );
		}
		public static implicit operator NSManagedObjectID( NSBasicObjectID64 value ) {
			return new NSManagedObjectID( value.Handle );
		}
		public static implicit operator NSObject( NSBasicObjectID64 value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSBasicObjectID64 value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSBasicObjectID64 value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSBasicObjectID64?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSBasicObjectID64 value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSBasicObjectID64 value1, NSBasicObjectID64 value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSBasicObjectID64 value1, NSBasicObjectID64 value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSBasicObjectID64( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSBasicObjectID64 alloc() {
			return new NSBasicObjectID64( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSBasicObjectID64 initWithPK64_( long k64 ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithPK64_( Handle, CachedSelectors.initWithPK64_, out ___occuredException, sizeof( long ), k64 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSBasicObjectID64( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPK64_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long k64 );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithPK64_ = "initWithPK64:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMappedObjectStore ) )]
	public struct NSBinaryObjectStore : IEquatable<NSBinaryObjectStore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSBinaryObjectStore;
		public static implicit operator NSMappedObjectStore( NSBinaryObjectStore value ) {
			return new NSMappedObjectStore( value.Handle );
		}
		public static implicit operator NSPersistentStore( NSBinaryObjectStore value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSBinaryObjectStore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSBinaryObjectStore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSBinaryObjectStore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSBinaryObjectStore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSBinaryObjectStore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSBinaryObjectStore value1, NSBinaryObjectStore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSBinaryObjectStore value1, NSBinaryObjectStore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSBinaryObjectStore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSBinaryObjectStore alloc() {
			return new NSBinaryObjectStore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSBinaryObjectStoreFile : IEquatable<NSBinaryObjectStoreFile> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSBinaryObjectStoreFile;
		public static implicit operator NSObject( NSBinaryObjectStoreFile value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSBinaryObjectStoreFile value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSBinaryObjectStoreFile value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSBinaryObjectStoreFile?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSBinaryObjectStoreFile value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSBinaryObjectStoreFile value1, NSBinaryObjectStoreFile value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSBinaryObjectStoreFile value1, NSBinaryObjectStoreFile value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSBinaryObjectStoreFile( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSBinaryObjectStoreFile alloc() {
			return new NSBinaryObjectStoreFile( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void clearCurrentValues() {
			RuntimeObject ___occuredException;
			NativeMethods.clearCurrentValues( Handle, CachedSelectors.clearCurrentValues, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public int databaseVersion() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseVersion( Handle, CachedSelectors.databaseVersion, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject fullMetadata() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fullMetadata( Handle, CachedSelectors.fullMetadata, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mapData() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mapData( Handle, CachedSelectors.mapData, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public ulong primaryKeyGeneration() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.primaryKeyGeneration( Handle, CachedSelectors.primaryKeyGeneration, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char readBinaryStoreFromData_originalPath_error_( NObjective.RuntimeObject data, NObjective.RuntimeObject originalPath, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.readBinaryStoreFromData_originalPath_error_( Handle, CachedSelectors.readBinaryStoreFromData_originalPath_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), data, originalPath, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char readFromFile_error_( NObjective.RuntimeObject file, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.readFromFile_error_( Handle, CachedSelectors.readFromFile_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), file, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char readMetadataFromFile_error_( NObjective.RuntimeObject file, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.readMetadataFromFile_error_( Handle, CachedSelectors.readMetadataFromFile_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), file, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setDatabaseVersion_( int version ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDatabaseVersion_( Handle, CachedSelectors.setDatabaseVersion_, out ___occuredException, sizeof( int ), version );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setFullMetadata_( NObjective.RuntimeObject metadata ) {
			RuntimeObject ___occuredException;
			NativeMethods.setFullMetadata_( Handle, CachedSelectors.setFullMetadata_, out ___occuredException, sizeof( NObjective.RuntimeObject ), metadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMapData_( NObjective.RuntimeObject data ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMapData_( Handle, CachedSelectors.setMapData_, out ___occuredException, sizeof( NObjective.RuntimeObject ), data );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPrimaryKeyGeneration_( ulong generation ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPrimaryKeyGeneration_( Handle, CachedSelectors.setPrimaryKeyGeneration_, out ___occuredException, sizeof( ulong ), generation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char writeMetadataToFile_error_( NObjective.RuntimeObject file, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.writeMetadataToFile_error_( Handle, CachedSelectors.writeMetadataToFile_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), file, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char writeToFile_error_( NObjective.RuntimeObject file, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.writeToFile_error_( Handle, CachedSelectors.writeToFile_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), file, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void clearCurrentValues( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int databaseVersion( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fullMetadata( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mapData( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern ulong primaryKeyGeneration( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char readBinaryStoreFromData_originalPath_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject data, NObjective.RuntimeObject originalPath, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char readFromFile_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject file, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char readMetadataFromFile_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject file, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDatabaseVersion_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int version );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setFullMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject metadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMapData_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject data );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPrimaryKeyGeneration_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ulong generation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char writeMetadataToFile_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject file, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char writeToFile_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject file, System.IntPtr error );
		}
		static internal class CachedSelectors {
			public static readonly Selector clearCurrentValues = "clearCurrentValues";
			public static readonly Selector databaseVersion = "databaseVersion";
			public static readonly Selector fullMetadata = "fullMetadata";
			public static readonly Selector mapData = "mapData";
			public static readonly Selector primaryKeyGeneration = "primaryKeyGeneration";
			public static readonly Selector readBinaryStoreFromData_originalPath_error_ = "readBinaryStoreFromData:originalPath:error:";
			public static readonly Selector readFromFile_error_ = "readFromFile:error:";
			public static readonly Selector readMetadataFromFile_error_ = "readMetadataFromFile:error:";
			public static readonly Selector setDatabaseVersion_ = "setDatabaseVersion:";
			public static readonly Selector setFullMetadata_ = "setFullMetadata:";
			public static readonly Selector setMapData_ = "setMapData:";
			public static readonly Selector setPrimaryKeyGeneration_ = "setPrimaryKeyGeneration:";
			public static readonly Selector writeMetadataToFile_error_ = "writeMetadataToFile:error:";
			public static readonly Selector writeToFile_error_ = "writeToFile:error:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStoreRequest ) )]
	public struct NSCountRequest : IEquatable<NSCountRequest> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSCountRequest;
		public static implicit operator NSPersistentStoreRequest( NSCountRequest value ) {
			return new NSPersistentStoreRequest( value.Handle );
		}
		public static implicit operator NSObject( NSCountRequest value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSCountRequest value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSCountRequest value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSCountRequest?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSCountRequest value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSCountRequest value1, NSCountRequest value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSCountRequest value1, NSCountRequest value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSCountRequest( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSCountRequest alloc() {
			return new NSCountRequest( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject fetchRequest() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchRequest( Handle, CachedSelectors.fetchRequest, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSCountRequest initWithFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithFetchRequest_( Handle, CachedSelectors.initWithFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSCountRequest( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequest( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
		}
		static internal class CachedSelectors {
			public static readonly Selector fetchRequest = "fetchRequest";
			public static readonly Selector initWithFetchRequest_ = "initWithFetchRequest:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapNode ) )]
	public struct NSDictionaryMapNode : IEquatable<NSDictionaryMapNode> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSDictionaryMapNode;
		public static implicit operator NSStoreMapNode( NSDictionaryMapNode value ) {
			return new NSStoreMapNode( value.Handle );
		}
		public static implicit operator NSObject( NSDictionaryMapNode value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSDictionaryMapNode value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSDictionaryMapNode value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSDictionaryMapNode?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSDictionaryMapNode value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSDictionaryMapNode value1, NSDictionaryMapNode value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSDictionaryMapNode value1, NSDictionaryMapNode value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSDictionaryMapNode( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSDictionaryMapNode alloc() {
			return new NSDictionaryMapNode( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public System.IntPtr attributeValues() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeValues( Handle, CachedSelectors.attributeValues, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSDictionaryMapNode initWithValues_objectID_( System.IntPtr values, NObjective.RuntimeObject objectID ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithValues_objectID_( Handle, CachedSelectors.initWithValues_objectID_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( NObjective.RuntimeObject ), values, objectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionaryMapNode( ___result );
		}
		unsafe public NObjective.RuntimeObject valueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr attributeValues( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithValues_objectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr values, NObjective.RuntimeObject objectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeValues = "attributeValues";
			public static readonly Selector initWithValues_objectID_ = "initWithValues:objectID:";
			public static readonly Selector valueForKey_ = "valueForKey:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStoreMap ) )]
	public struct NSDictionaryStoreMap : IEquatable<NSDictionaryStoreMap> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSDictionaryStoreMap;
		public static implicit operator NSPersistentStoreMap( NSDictionaryStoreMap value ) {
			return new NSPersistentStoreMap( value.Handle );
		}
		public static implicit operator NSObject( NSDictionaryStoreMap value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSDictionaryStoreMap value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSDictionaryStoreMap value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSDictionaryStoreMap?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSDictionaryStoreMap value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSDictionaryStoreMap value1, NSDictionaryStoreMap value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSDictionaryStoreMap value1, NSDictionaryStoreMap value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSDictionaryStoreMap( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSDictionaryStoreMap alloc() {
			return new NSDictionaryStoreMap( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSDictionaryStoreMap initWithStore_fromArchivedData_( NObjective.RuntimeObject store, NObjective.RuntimeObject fromArchivedData ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithStore_fromArchivedData_( Handle, CachedSelectors.initWithStore_fromArchivedData_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), store, fromArchivedData );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionaryStoreMap( ___result );
		}
		unsafe public NSDictionaryStoreMap initWithStore_fromPath_( NObjective.RuntimeObject store, NObjective.RuntimeObject fromPath ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithStore_fromPath_( Handle, CachedSelectors.initWithStore_fromPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), store, fromPath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionaryStoreMap( ___result );
		}
		unsafe public void saveToPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			NativeMethods.saveToPath_( Handle, CachedSelectors.saveToPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithStore_fromArchivedData_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store, NObjective.RuntimeObject fromArchivedData );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithStore_fromPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store, NObjective.RuntimeObject fromPath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void saveToPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithStore_fromArchivedData_ = "initWithStore:fromArchivedData:";
			public static readonly Selector initWithStore_fromPath_ = "initWithStore:fromPath:";
			public static readonly Selector saveToPath_ = "saveToPath:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSEntityDescription : IEquatable<NSEntityDescription> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSEntityDescription;
		public static implicit operator NSObject( NSEntityDescription value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSEntityDescription value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSEntityDescription value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSEntityDescription?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSEntityDescription value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSEntityDescription value1, NSEntityDescription value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSEntityDescription value1, NSEntityDescription value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSEntityDescription( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSEntityDescription alloc() {
			return new NSEntityDescription( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NSEntityDescription entityForName_inManagedObjectContext_( string name, NSManagedObjectContext inManagedObjectContext ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			var ___result = NativeMethods.entityForName_inManagedObjectContext_( ClassHandle, CachedSelectors.entityForName_inManagedObjectContext_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSManagedObjectContext ), ___wrappedname, inManagedObjectContext );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NObjective.RuntimeObject insertNewObjectForEntityForName_inManagedObjectContext_( string name, NSManagedObjectContext inManagedObjectContext ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			var ___result = NativeMethods.insertNewObjectForEntityForName_inManagedObjectContext_( ClassHandle, CachedSelectors.insertNewObjectForEntityForName_inManagedObjectContext_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSManagedObjectContext ), ___wrappedname, inManagedObjectContext );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject attributeKeys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeKeys( Handle, CachedSelectors.attributeKeys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSDictionary attributesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributesByName( Handle, CachedSelectors.attributesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSEntityDescription initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public NObjective.RuntimeObject inverseForRelationshipKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.inverseForRelationshipKey_( Handle, CachedSelectors.inverseForRelationshipKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public bool isAbstract() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isAbstract( Handle, CachedSelectors.isAbstract, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isKindOfEntity_( NSEntityDescription entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isKindOfEntity_( Handle, CachedSelectors.isKindOfEntity_, out ___occuredException, sizeof( NSEntityDescription ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public string managedObjectClassName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectClassName( Handle, CachedSelectors.managedObjectClassName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSManagedObjectModel managedObjectModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectModel( Handle, CachedSelectors.managedObjectModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public string name() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.name( Handle, CachedSelectors.name, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSArray properties() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.properties( Handle, CachedSelectors.properties, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSDictionary propertiesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertiesByName( Handle, CachedSelectors.propertiesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSDictionary relationshipsByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipsByName( Handle, CachedSelectors.relationshipsByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSArray relationshipsWithDestinationEntity_( NSEntityDescription entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipsWithDestinationEntity_( Handle, CachedSelectors.relationshipsWithDestinationEntity_, out ___occuredException, sizeof( NSEntityDescription ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setAbstract_( bool @abstract ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAbstract_( Handle, CachedSelectors.setAbstract_, out ___occuredException, sizeof( bool ), @abstract );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setManagedObjectClassName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setManagedObjectClassName_( Handle, CachedSelectors.setManagedObjectClassName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setName_( Handle, CachedSelectors.setName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setProperties_( NSArray properties ) {
			RuntimeObject ___occuredException;
			NativeMethods.setProperties_( Handle, CachedSelectors.setProperties_, out ___occuredException, sizeof( NSArray ), properties );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSubentities_( NSArray subentities ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSubentities_( Handle, CachedSelectors.setSubentities_, out ___occuredException, sizeof( NSArray ), subentities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUserInfo_( NSDictionary info ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUserInfo_( Handle, CachedSelectors.setUserInfo_, out ___occuredException, sizeof( NSDictionary ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setVersionHashModifier_( string modifier ) {
			RuntimeObject ___occuredException;
			var ___wrappedmodifier = Runtime.CreateStringProxy( modifier );
			NativeMethods.setVersionHashModifier_( Handle, CachedSelectors.setVersionHashModifier_, out ___occuredException, sizeof( IntPtr ), ___wrappedmodifier );
			Runtime.ReleaseNativeObject( ___wrappedmodifier );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSArray subentities() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentities( Handle, CachedSelectors.subentities, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSDictionary subentitiesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentitiesByName( Handle, CachedSelectors.subentitiesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSEntityDescription superentity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.superentity( Handle, CachedSelectors.superentity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public NObjective.RuntimeObject toManyRelationshipKeys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.toManyRelationshipKeys( Handle, CachedSelectors.toManyRelationshipKeys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject toOneRelationshipKeys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.toOneRelationshipKeys( Handle, CachedSelectors.toOneRelationshipKeys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSDictionary userInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.userInfo( Handle, CachedSelectors.userInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSData versionHash() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionHash( Handle, CachedSelectors.versionHash, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSData( ___result );
		}
		unsafe public string versionHashModifier() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionHashModifier( Handle, CachedSelectors.versionHashModifier, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeKeys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityForName_inManagedObjectContext_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name, NSManagedObjectContext inManagedObjectContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr insertNewObjectForEntityForName_inManagedObjectContext_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name, NSManagedObjectContext inManagedObjectContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr inverseForRelationshipKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isAbstract( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isKindOfEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityDescription entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectClassName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr name( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr properties( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr propertiesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipsByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipsWithDestinationEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityDescription entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAbstract_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool @abstract );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setManagedObjectClassName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setProperties_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray properties );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSubentities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray subentities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUserInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setVersionHashModifier_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr modifier );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr subentities( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr subentitiesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr superentity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr toManyRelationshipKeys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr toOneRelationshipKeys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr userInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionHash( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionHashModifier( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeKeys = "attributeKeys";
			public static readonly Selector attributesByName = "attributesByName";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entityForName_inManagedObjectContext_ = "entityForName:inManagedObjectContext:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector insertNewObjectForEntityForName_inManagedObjectContext_ = "insertNewObjectForEntityForName:inManagedObjectContext:";
			public static readonly Selector inverseForRelationshipKey_ = "inverseForRelationshipKey:";
			public static readonly Selector isAbstract = "isAbstract";
			public static readonly Selector isKindOfEntity_ = "isKindOfEntity:";
			public static readonly Selector managedObjectClassName = "managedObjectClassName";
			public static readonly Selector managedObjectModel = "managedObjectModel";
			public static readonly Selector name = "name";
			public static readonly Selector properties = "properties";
			public static readonly Selector propertiesByName = "propertiesByName";
			public static readonly Selector relationshipsByName = "relationshipsByName";
			public static readonly Selector relationshipsWithDestinationEntity_ = "relationshipsWithDestinationEntity:";
			public static readonly Selector release = "release";
			public static readonly Selector setAbstract_ = "setAbstract:";
			public static readonly Selector setManagedObjectClassName_ = "setManagedObjectClassName:";
			public static readonly Selector setName_ = "setName:";
			public static readonly Selector setProperties_ = "setProperties:";
			public static readonly Selector setSubentities_ = "setSubentities:";
			public static readonly Selector setUserInfo_ = "setUserInfo:";
			public static readonly Selector setVersionHashModifier_ = "setVersionHashModifier:";
			public static readonly Selector subentities = "subentities";
			public static readonly Selector subentitiesByName = "subentitiesByName";
			public static readonly Selector superentity = "superentity";
			public static readonly Selector toManyRelationshipKeys = "toManyRelationshipKeys";
			public static readonly Selector toOneRelationshipKeys = "toOneRelationshipKeys";
			public static readonly Selector userInfo = "userInfo";
			public static readonly Selector versionHash = "versionHash";
			public static readonly Selector versionHashModifier = "versionHashModifier";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSEntityMapping : IEquatable<NSEntityMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSEntityMapping;
		public static implicit operator NSObject( NSEntityMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSEntityMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSEntityMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSEntityMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSEntityMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSEntityMapping value1, NSEntityMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSEntityMapping value1, NSEntityMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSEntityMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSEntityMapping alloc() {
			return new NSEntityMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSArray attributeMappings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeMappings( Handle, CachedSelectors.attributeMappings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public string destinationEntityName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntityName( Handle, CachedSelectors.destinationEntityName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSData destinationEntityVersionHash() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntityVersionHash( Handle, CachedSelectors.destinationEntityVersionHash, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSData( ___result );
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public string entityMigrationPolicyClassName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityMigrationPolicyClassName( Handle, CachedSelectors.entityMigrationPolicyClassName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSEntityMapping initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityMapping( ___result );
		}
		unsafe public bool isEditable() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isEditable( Handle, CachedSelectors.isEditable, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSEntityMappingType mappingType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingType( Handle, CachedSelectors.mappingType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( NSEntityMappingType ) ___result;
		}
		unsafe public string name() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.name( Handle, CachedSelectors.name, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSArray relationshipMappings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipMappings( Handle, CachedSelectors.relationshipMappings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public void setAttributeMappings_( NSArray mappings ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAttributeMappings_( Handle, CachedSelectors.setAttributeMappings_, out ___occuredException, sizeof( NSArray ), mappings );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDestinationEntityName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setDestinationEntityName_( Handle, CachedSelectors.setDestinationEntityName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDestinationEntityVersionHash_( NSData hash ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationEntityVersionHash_( Handle, CachedSelectors.setDestinationEntityVersionHash_, out ___occuredException, sizeof( NSData ), hash );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setEntityMigrationPolicyClassName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setEntityMigrationPolicyClassName_( Handle, CachedSelectors.setEntityMigrationPolicyClassName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMappingType_( NSEntityMappingType type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMappingType_( Handle, CachedSelectors.setMappingType_, out ___occuredException, sizeof( NSEntityMappingType ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setName_( Handle, CachedSelectors.setName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRelationshipMappings_( NSArray mappings ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRelationshipMappings_( Handle, CachedSelectors.setRelationshipMappings_, out ___occuredException, sizeof( NSArray ), mappings );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceEntityName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setSourceEntityName_( Handle, CachedSelectors.setSourceEntityName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceEntityVersionHash_( NSData hash ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceEntityVersionHash_( Handle, CachedSelectors.setSourceEntityVersionHash_, out ___occuredException, sizeof( NSData ), hash );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceExpression_( NSExpression expression ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceExpression_( Handle, CachedSelectors.setSourceExpression_, out ___occuredException, sizeof( NSExpression ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUserInfo_( NSDictionary info ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUserInfo_( Handle, CachedSelectors.setUserInfo_, out ___occuredException, sizeof( NSDictionary ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public string sourceEntityName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceEntityName( Handle, CachedSelectors.sourceEntityName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSData sourceEntityVersionHash() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceEntityVersionHash( Handle, CachedSelectors.sourceEntityVersionHash, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSData( ___result );
		}
		unsafe public NSExpression sourceExpression() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceExpression( Handle, CachedSelectors.sourceExpression, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSExpression( ___result );
		}
		unsafe public NSDictionary userInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.userInfo( Handle, CachedSelectors.userInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeMappings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntityName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntityVersionHash( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityMigrationPolicyClassName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isEditable( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint mappingType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr name( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipMappings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAttributeMappings_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray mappings );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationEntityName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationEntityVersionHash_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSData hash );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setEntityMigrationPolicyClassName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMappingType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMappingType type );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRelationshipMappings_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray mappings );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceEntityName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceEntityVersionHash_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSData hash );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSExpression expression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUserInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceEntityName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceEntityVersionHash( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceExpression( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr userInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeMappings = "attributeMappings";
			public static readonly Selector destinationEntityName = "destinationEntityName";
			public static readonly Selector destinationEntityVersionHash = "destinationEntityVersionHash";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entityMigrationPolicyClassName = "entityMigrationPolicyClassName";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector isEditable = "isEditable";
			public static readonly Selector mappingType = "mappingType";
			public static readonly Selector name = "name";
			public static readonly Selector relationshipMappings = "relationshipMappings";
			public static readonly Selector setAttributeMappings_ = "setAttributeMappings:";
			public static readonly Selector setDestinationEntityName_ = "setDestinationEntityName:";
			public static readonly Selector setDestinationEntityVersionHash_ = "setDestinationEntityVersionHash:";
			public static readonly Selector setEntityMigrationPolicyClassName_ = "setEntityMigrationPolicyClassName:";
			public static readonly Selector setMappingType_ = "setMappingType:";
			public static readonly Selector setName_ = "setName:";
			public static readonly Selector setRelationshipMappings_ = "setRelationshipMappings:";
			public static readonly Selector setSourceEntityName_ = "setSourceEntityName:";
			public static readonly Selector setSourceEntityVersionHash_ = "setSourceEntityVersionHash:";
			public static readonly Selector setSourceExpression_ = "setSourceExpression:";
			public static readonly Selector setUserInfo_ = "setUserInfo:";
			public static readonly Selector sourceEntityName = "sourceEntityName";
			public static readonly Selector sourceEntityVersionHash = "sourceEntityVersionHash";
			public static readonly Selector sourceExpression = "sourceExpression";
			public static readonly Selector userInfo = "userInfo";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSEntityMigrationPolicy : IEquatable<NSEntityMigrationPolicy> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSEntityMigrationPolicy;
		public static implicit operator NSObject( NSEntityMigrationPolicy value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSEntityMigrationPolicy value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSEntityMigrationPolicy value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSEntityMigrationPolicy?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSEntityMigrationPolicy value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSEntityMigrationPolicy value1, NSEntityMigrationPolicy value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSEntityMigrationPolicy value1, NSEntityMigrationPolicy value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSEntityMigrationPolicy( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSEntityMigrationPolicy alloc() {
			return new NSEntityMigrationPolicy( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public bool beginEntityMapping_manager_error_( NSEntityMapping mapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.beginEntityMapping_manager_error_( Handle, CachedSelectors.beginEntityMapping_manager_error_, out ___occuredException, sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), mapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool createDestinationInstancesForSourceInstance_entityMapping_manager_error_( NSManagedObject instance, NSEntityMapping entityMapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createDestinationInstancesForSourceInstance_entityMapping_manager_error_( Handle, CachedSelectors.createDestinationInstancesForSourceInstance_entityMapping_manager_error_, out ___occuredException, sizeof( NSManagedObject ) + sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), instance, entityMapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool createRelationshipsForDestinationInstance_entityMapping_manager_error_( NSManagedObject instance, NSEntityMapping entityMapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createRelationshipsForDestinationInstance_entityMapping_manager_error_( Handle, CachedSelectors.createRelationshipsForDestinationInstance_entityMapping_manager_error_, out ___occuredException, sizeof( NSManagedObject ) + sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), instance, entityMapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool endEntityMapping_manager_error_( NSEntityMapping mapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.endEntityMapping_manager_error_( Handle, CachedSelectors.endEntityMapping_manager_error_, out ___occuredException, sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), mapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool endInstanceCreationForEntityMapping_manager_error_( NSEntityMapping mapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.endInstanceCreationForEntityMapping_manager_error_( Handle, CachedSelectors.endInstanceCreationForEntityMapping_manager_error_, out ___occuredException, sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), mapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool endRelationshipCreationForEntityMapping_manager_error_( NSEntityMapping mapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.endRelationshipCreationForEntityMapping_manager_error_( Handle, CachedSelectors.endRelationshipCreationForEntityMapping_manager_error_, out ___occuredException, sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), mapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool performCustomValidationForEntityMapping_manager_error_( NSEntityMapping mapping, NSMigrationManager manager, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.performCustomValidationForEntityMapping_manager_error_( Handle, CachedSelectors.performCustomValidationForEntityMapping_manager_error_, out ___occuredException, sizeof( NSEntityMapping ) + sizeof( NSMigrationManager ) + sizeof( IntPtr ), mapping, manager, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool beginEntityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping, NSMigrationManager manager, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool createDestinationInstancesForSourceInstance_entityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject instance, NSEntityMapping entityMapping, NSMigrationManager manager, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool createRelationshipsForDestinationInstance_entityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject instance, NSEntityMapping entityMapping, NSMigrationManager manager, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool endEntityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping, NSMigrationManager manager, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool endInstanceCreationForEntityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping, NSMigrationManager manager, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool endRelationshipCreationForEntityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping, NSMigrationManager manager, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool performCustomValidationForEntityMapping_manager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping, NSMigrationManager manager, ref NSError error );
		}
		static internal class CachedSelectors {
			public static readonly Selector beginEntityMapping_manager_error_ = "beginEntityMapping:manager:error:";
			public static readonly Selector createDestinationInstancesForSourceInstance_entityMapping_manager_error_ = "createDestinationInstancesForSourceInstance:entityMapping:manager:error:";
			public static readonly Selector createRelationshipsForDestinationInstance_entityMapping_manager_error_ = "createRelationshipsForDestinationInstance:entityMapping:manager:error:";
			public static readonly Selector endEntityMapping_manager_error_ = "endEntityMapping:manager:error:";
			public static readonly Selector endInstanceCreationForEntityMapping_manager_error_ = "endInstanceCreationForEntityMapping:manager:error:";
			public static readonly Selector endRelationshipCreationForEntityMapping_manager_error_ = "endRelationshipCreationForEntityMapping:manager:error:";
			public static readonly Selector performCustomValidationForEntityMapping_manager_error_ = "performCustomValidationForEntityMapping:manager:error:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapping ) )]
	public struct NSEntityStoreMapping : IEquatable<NSEntityStoreMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSEntityStoreMapping;
		public static implicit operator NSStoreMapping( NSEntityStoreMapping value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSEntityStoreMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSEntityStoreMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSEntityStoreMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSEntityStoreMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSEntityStoreMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSEntityStoreMapping value1, NSEntityStoreMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSEntityStoreMapping value1, NSEntityStoreMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSEntityStoreMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSEntityStoreMapping alloc() {
			return new NSEntityStoreMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject attributeColumnDefinitions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeColumnDefinitions( Handle, CachedSelectors.attributeColumnDefinitions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject attributeMappings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeMappings( Handle, CachedSelectors.attributeMappings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject createTableStatement() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createTableStatement( Handle, CachedSelectors.createTableStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject foreignKeyColumnDefinitions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKeyColumnDefinitions( Handle, CachedSelectors.foreignKeyColumnDefinitions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject foreignKeyConstraintDefinitions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKeyConstraintDefinitions( Handle, CachedSelectors.foreignKeyConstraintDefinitions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSEntityStoreMapping initWithEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_( Handle, CachedSelectors.initWithEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityStoreMapping( ___result );
		}
		unsafe public bool isSingleTableEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isSingleTableEntity( Handle, CachedSelectors.isSingleTableEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject primaryKeyColumnDefinitions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.primaryKeyColumnDefinitions( Handle, CachedSelectors.primaryKeyColumnDefinitions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject primaryKeys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.primaryKeys( Handle, CachedSelectors.primaryKeys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject propertyMappings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertyMappings( Handle, CachedSelectors.propertyMappings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject relationshipMappings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipMappings( Handle, CachedSelectors.relationshipMappings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setEntity_( Handle, CachedSelectors.setEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPrimaryKeys_( NObjective.RuntimeObject keys ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPrimaryKeys_( Handle, CachedSelectors.setPrimaryKeys_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPropertyMappings_( NObjective.RuntimeObject mappings ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPropertyMappings_( Handle, CachedSelectors.setPropertyMappings_, out ___occuredException, sizeof( NObjective.RuntimeObject ), mappings );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSingleTableEntity_( char entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSingleTableEntity_( Handle, CachedSelectors.setSingleTableEntity_, out ___occuredException, sizeof( char ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSubentityColumn_( NObjective.RuntimeObject column ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSubentityColumn_( Handle, CachedSelectors.setSubentityColumn_, out ___occuredException, sizeof( NObjective.RuntimeObject ), column );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSubentityID_( uint id ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSubentityID_( Handle, CachedSelectors.setSubentityID_, out ___occuredException, sizeof( uint ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject subentityColumn() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentityColumn( Handle, CachedSelectors.subentityColumn, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint subentityID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentityID( Handle, CachedSelectors.subentityID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeColumnDefinitions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeMappings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createTableStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignKeyColumnDefinitions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignKeyConstraintDefinitions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isSingleTableEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr primaryKeyColumnDefinitions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr primaryKeys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr propertyMappings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipMappings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPrimaryKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPropertyMappings_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject mappings );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSingleTableEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSubentityColumn_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject column );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSubentityID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr subentityColumn( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint subentityID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeColumnDefinitions = "attributeColumnDefinitions";
			public static readonly Selector attributeMappings = "attributeMappings";
			public static readonly Selector createTableStatement = "createTableStatement";
			public static readonly Selector entity = "entity";
			public static readonly Selector foreignKeyColumnDefinitions = "foreignKeyColumnDefinitions";
			public static readonly Selector foreignKeyConstraintDefinitions = "foreignKeyConstraintDefinitions";
			public static readonly Selector initWithEntity_ = "initWithEntity:";
			public static readonly Selector isSingleTableEntity = "isSingleTableEntity";
			public static readonly Selector primaryKeyColumnDefinitions = "primaryKeyColumnDefinitions";
			public static readonly Selector primaryKeys = "primaryKeys";
			public static readonly Selector propertyMappings = "propertyMappings";
			public static readonly Selector relationshipMappings = "relationshipMappings";
			public static readonly Selector setEntity_ = "setEntity:";
			public static readonly Selector setPrimaryKeys_ = "setPrimaryKeys:";
			public static readonly Selector setPropertyMappings_ = "setPropertyMappings:";
			public static readonly Selector setSingleTableEntity_ = "setSingleTableEntity:";
			public static readonly Selector setSubentityColumn_ = "setSubentityColumn:";
			public static readonly Selector setSubentityID_ = "setSubentityID:";
			public static readonly Selector subentityColumn = "subentityColumn";
			public static readonly Selector subentityID = "subentityID";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSExternalRefCountedData : IEquatable<NSExternalRefCountedData> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSExternalRefCountedData;
		public static implicit operator NSObject( NSExternalRefCountedData value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSExternalRefCountedData value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSExternalRefCountedData value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSExternalRefCountedData?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSExternalRefCountedData value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSExternalRefCountedData value1, NSExternalRefCountedData value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSExternalRefCountedData value1, NSExternalRefCountedData value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSExternalRefCountedData( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSExternalRefCountedData alloc() {
			return new NSExternalRefCountedData( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject ancillaryData() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.ancillaryData( Handle, CachedSelectors.ancillaryData, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public int decrementRefCount() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.decrementRefCount( Handle, CachedSelectors.decrementRefCount, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public int externalReferenceCount() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalReferenceCount( Handle, CachedSelectors.externalReferenceCount, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void incrementRefCount() {
			RuntimeObject ___occuredException;
			NativeMethods.incrementRefCount( Handle, CachedSelectors.incrementRefCount, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSExternalRefCountedData initWithOptions_andTimestamp_( uint options, double andTimestamp ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithOptions_andTimestamp_( Handle, CachedSelectors.initWithOptions_andTimestamp_, out ___occuredException, sizeof( uint ) + sizeof( double ), options, andTimestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSExternalRefCountedData( ___result );
		}
		unsafe public uint options() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.options( Handle, CachedSelectors.options, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint optionsForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.optionsForKey_( Handle, CachedSelectors.optionsForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject relatedIDsForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relatedIDsForKey_( Handle, CachedSelectors.relatedIDsForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject relationshipCaches() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipCaches( Handle, CachedSelectors.relationshipCaches, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setAncillaryData_( NObjective.RuntimeObject data ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAncillaryData_( Handle, CachedSelectors.setAncillaryData_, out ___occuredException, sizeof( NObjective.RuntimeObject ), data );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setExternalReferenceCount_( int count ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExternalReferenceCount_( Handle, CachedSelectors.setExternalReferenceCount_, out ___occuredException, sizeof( int ), count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRelatedIDs_forKey_options_andTimestamp_( NObjective.RuntimeObject ds, NObjective.RuntimeObject forKey, uint options, double andTimestamp ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRelatedIDs_forKey_options_andTimestamp_( Handle, CachedSelectors.setRelatedIDs_forKey_options_andTimestamp_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( uint ) + sizeof( double ), ds, forKey, options, andTimestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRelationshipCaches_( NObjective.RuntimeObject caches ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRelationshipCaches_( Handle, CachedSelectors.setRelationshipCaches_, out ___occuredException, sizeof( NObjective.RuntimeObject ), caches );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setTimestamp_( double timestamp ) {
			RuntimeObject ___occuredException;
			NativeMethods.setTimestamp_( Handle, CachedSelectors.setTimestamp_, out ___occuredException, sizeof( double ), timestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool shouldPersist() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.shouldPersist( Handle, CachedSelectors.shouldPersist, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool shouldRefresh() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.shouldRefresh( Handle, CachedSelectors.shouldRefresh, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public double timestamp() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.timestamp( Handle, CachedSelectors.timestamp, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public double timestampForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.timestampForKey_( Handle, CachedSelectors.timestampForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr ancillaryData( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int decrementRefCount( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int externalReferenceCount( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void incrementRefCount( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithOptions_andTimestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint options, double andTimestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint options( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint optionsForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relatedIDsForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipCaches( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAncillaryData_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject data );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExternalReferenceCount_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRelatedIDs_forKey_options_andTimestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject ds, NObjective.RuntimeObject forKey, uint options, double andTimestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRelationshipCaches_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject caches );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setTimestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, double timestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool shouldPersist( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool shouldRefresh( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_fpret_eh2" )]
			public static extern double timestamp( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_fpret_eh2" )]
			public static extern double timestampForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
		}
		static internal class CachedSelectors {
			public static readonly Selector ancillaryData = "ancillaryData";
			public static readonly Selector decrementRefCount = "decrementRefCount";
			public static readonly Selector externalReferenceCount = "externalReferenceCount";
			public static readonly Selector incrementRefCount = "incrementRefCount";
			public static readonly Selector initWithOptions_andTimestamp_ = "initWithOptions:andTimestamp:";
			public static readonly Selector options = "options";
			public static readonly Selector optionsForKey_ = "optionsForKey:";
			public static readonly Selector relatedIDsForKey_ = "relatedIDsForKey:";
			public static readonly Selector relationshipCaches = "relationshipCaches";
			public static readonly Selector release = "release";
			public static readonly Selector setAncillaryData_ = "setAncillaryData:";
			public static readonly Selector setExternalReferenceCount_ = "setExternalReferenceCount:";
			public static readonly Selector setRelatedIDs_forKey_options_andTimestamp_ = "setRelatedIDs:forKey:options:andTimestamp:";
			public static readonly Selector setRelationshipCaches_ = "setRelationshipCaches:";
			public static readonly Selector setTimestamp_ = "setTimestamp:";
			public static readonly Selector shouldPersist = "shouldPersist";
			public static readonly Selector shouldRefresh = "shouldRefresh";
			public static readonly Selector timestamp = "timestamp";
			public static readonly Selector timestampForKey_ = "timestampForKey:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSFaultHandler : IEquatable<NSFaultHandler> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSFaultHandler;
		public static implicit operator NSObject( NSFaultHandler value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSFaultHandler value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSFaultHandler value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSFaultHandler?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSFaultHandler value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSFaultHandler value1, NSFaultHandler value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSFaultHandler value1, NSFaultHandler value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSFaultHandler( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSFaultHandler alloc() {
			return new NSFaultHandler( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void fulfillFault_withContext_( NObjective.RuntimeObject fault, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			NativeMethods.fulfillFault_withContext_( Handle, CachedSelectors.fulfillFault_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), fault, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSFaultHandler initWithPersistenceStore_( NObjective.RuntimeObject store ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithPersistenceStore_( Handle, CachedSelectors.initWithPersistenceStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSFaultHandler( ___result );
		}
		unsafe public NObjective.RuntimeObject persistenceStore() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistenceStore( Handle, CachedSelectors.persistenceStore, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject retainedFulfillAggregateFaultForObject_andRelationship_withContext_( NObjective.RuntimeObject @object, NObjective.RuntimeObject andRelationship, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedFulfillAggregateFaultForObject_andRelationship_withContext_( Handle, CachedSelectors.retainedFulfillAggregateFaultForObject_andRelationship_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, andRelationship, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void turnObject_intoFaultWithContext_( NObjective.RuntimeObject @object, NObjective.RuntimeObject intoFaultWithContext ) {
			RuntimeObject ___occuredException;
			NativeMethods.turnObject_intoFaultWithContext_( Handle, CachedSelectors.turnObject_intoFaultWithContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, intoFaultWithContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void fulfillFault_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject fault, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPersistenceStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistenceStore( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedFulfillAggregateFaultForObject_andRelationship_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject andRelationship, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void turnObject_intoFaultWithContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject intoFaultWithContext );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector fulfillFault_withContext_ = "fulfillFault:withContext:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithPersistenceStore_ = "initWithPersistenceStore:";
			public static readonly Selector persistenceStore = "persistenceStore";
			public static readonly Selector retainedFulfillAggregateFaultForObject_andRelationship_withContext_ = "retainedFulfillAggregateFaultForObject:andRelationship:withContext:";
			public static readonly Selector turnObject_intoFaultWithContext_ = "turnObject:intoFaultWithContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPropertyDescription ) )]
	public struct NSFetchedPropertyDescription : IEquatable<NSFetchedPropertyDescription> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSFetchedPropertyDescription;
		public static implicit operator NSPropertyDescription( NSFetchedPropertyDescription value ) {
			return new NSPropertyDescription( value.Handle );
		}
		public static implicit operator NSObject( NSFetchedPropertyDescription value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSFetchedPropertyDescription value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSFetchedPropertyDescription value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSFetchedPropertyDescription?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSFetchedPropertyDescription value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSFetchedPropertyDescription value1, NSFetchedPropertyDescription value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSFetchedPropertyDescription value1, NSFetchedPropertyDescription value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSFetchedPropertyDescription( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSFetchedPropertyDescription alloc() {
			return new NSFetchedPropertyDescription( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSFetchRequest fetchRequest() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchRequest( Handle, CachedSelectors.fetchRequest, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSFetchRequest( ___result );
		}
		unsafe public void setFetchRequest_( NSFetchRequest request ) {
			RuntimeObject ___occuredException;
			NativeMethods.setFetchRequest_( Handle, CachedSelectors.setFetchRequest_, out ___occuredException, sizeof( NSFetchRequest ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequest( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSFetchRequest request );
		}
		static internal class CachedSelectors {
			public static readonly Selector fetchRequest = "fetchRequest";
			public static readonly Selector setFetchRequest_ = "setFetchRequest:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSFetchRequest : IEquatable<NSFetchRequest> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSFetchRequest;
		public static implicit operator NSObject( NSFetchRequest value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSFetchRequest value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSFetchRequest value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSFetchRequest?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSFetchRequest value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSFetchRequest value1, NSFetchRequest value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSFetchRequest value1, NSFetchRequest value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSFetchRequest( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSFetchRequest alloc() {
			return new NSFetchRequest( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSArray affectedStores() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.affectedStores( Handle, CachedSelectors.affectedStores, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public char autoDistinct() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.autoDistinct( Handle, CachedSelectors.autoDistinct, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSEntityDescription entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public char excludesPendingChanges() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.excludesPendingChanges( Handle, CachedSelectors.excludesPendingChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint fetchLimit() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchLimit( Handle, CachedSelectors.fetchLimit, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public char hasChanges() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasChanges( Handle, CachedSelectors.hasChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char includeRowData() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.includeRowData( Handle, CachedSelectors.includeRowData, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool includesPropertyValues() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.includesPropertyValues( Handle, CachedSelectors.includesPropertyValues, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool includesSubentities() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.includesSubentities( Handle, CachedSelectors.includesSubentities, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSFetchRequest initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSFetchRequest( ___result );
		}
		unsafe public NSPredicate predicate() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.predicate( Handle, CachedSelectors.predicate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPredicate( ___result );
		}
		unsafe public NObjective.RuntimeObject prefetchRelationshipKeys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.prefetchRelationshipKeys( Handle, CachedSelectors.prefetchRelationshipKeys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char prepopulateObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.prepopulateObjects( Handle, CachedSelectors.prepopulateObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSArray relationshipKeyPathsForPrefetching() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipKeyPathsForPrefetching( Handle, CachedSelectors.relationshipKeyPathsForPrefetching, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public uint requestType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.requestType( Handle, CachedSelectors.requestType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public char resultsAsObjectIDs() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.resultsAsObjectIDs( Handle, CachedSelectors.resultsAsObjectIDs, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint resultType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.resultType( Handle, CachedSelectors.resultType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public bool returnsObjectsAsFaults() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.returnsObjectsAsFaults( Handle, CachedSelectors.returnsObjectsAsFaults, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setAffectedStores_( NSArray stores ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAffectedStores_( Handle, CachedSelectors.setAffectedStores_, out ___occuredException, sizeof( NSArray ), stores );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setAutoDistinct_( char distinct ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAutoDistinct_( Handle, CachedSelectors.setAutoDistinct_, out ___occuredException, sizeof( char ), distinct );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setEntity_( NSEntityDescription entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setEntity_( Handle, CachedSelectors.setEntity_, out ___occuredException, sizeof( NSEntityDescription ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setExcludesPendingChanges_( char changes ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExcludesPendingChanges_( Handle, CachedSelectors.setExcludesPendingChanges_, out ___occuredException, sizeof( char ), changes );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setFetchLimit_( uint limit ) {
			RuntimeObject ___occuredException;
			NativeMethods.setFetchLimit_( Handle, CachedSelectors.setFetchLimit_, out ___occuredException, sizeof( uint ), limit );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setIncludeRowData_( char data ) {
			RuntimeObject ___occuredException;
			NativeMethods.setIncludeRowData_( Handle, CachedSelectors.setIncludeRowData_, out ___occuredException, sizeof( char ), data );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setIncludesPropertyValues_( bool values ) {
			RuntimeObject ___occuredException;
			NativeMethods.setIncludesPropertyValues_( Handle, CachedSelectors.setIncludesPropertyValues_, out ___occuredException, sizeof( bool ), values );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setIncludesSubentities_( bool subentities ) {
			RuntimeObject ___occuredException;
			NativeMethods.setIncludesSubentities_( Handle, CachedSelectors.setIncludesSubentities_, out ___occuredException, sizeof( bool ), subentities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPredicate_( NSPredicate predicate ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPredicate_( Handle, CachedSelectors.setPredicate_, out ___occuredException, sizeof( NSPredicate ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPrefetchRelationshipKeys_( NObjective.RuntimeObject keys ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPrefetchRelationshipKeys_( Handle, CachedSelectors.setPrefetchRelationshipKeys_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPrepopulateObjects_( char objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPrepopulateObjects_( Handle, CachedSelectors.setPrepopulateObjects_, out ___occuredException, sizeof( char ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRelationshipKeyPathsForPrefetching_( NSArray prefetching ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRelationshipKeyPathsForPrefetching_( Handle, CachedSelectors.setRelationshipKeyPathsForPrefetching_, out ___occuredException, sizeof( NSArray ), prefetching );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setResultsAsObjectIDs_( char ds ) {
			RuntimeObject ___occuredException;
			NativeMethods.setResultsAsObjectIDs_( Handle, CachedSelectors.setResultsAsObjectIDs_, out ___occuredException, sizeof( char ), ds );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setResultType_( uint type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setResultType_( Handle, CachedSelectors.setResultType_, out ___occuredException, sizeof( uint ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setReturnsObjectsAsFaults_( bool faults ) {
			RuntimeObject ___occuredException;
			NativeMethods.setReturnsObjectsAsFaults_( Handle, CachedSelectors.setReturnsObjectsAsFaults_, out ___occuredException, sizeof( bool ), faults );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setShallowInheritance_( char inheritance ) {
			RuntimeObject ___occuredException;
			NativeMethods.setShallowInheritance_( Handle, CachedSelectors.setShallowInheritance_, out ___occuredException, sizeof( char ), inheritance );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSortDescriptors_( NSArray descriptors ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSortDescriptors_( Handle, CachedSelectors.setSortDescriptors_, out ___occuredException, sizeof( NSArray ), descriptors );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char shallowInheritance() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.shallowInheritance( Handle, CachedSelectors.shallowInheritance, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSArray sortDescriptors() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sortDescriptors( Handle, CachedSelectors.sortDescriptors, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NObjective.RuntimeObject stores() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.stores( Handle, CachedSelectors.stores, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr affectedStores( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char autoDistinct( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char excludesPendingChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint fetchLimit( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char includeRowData( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool includesPropertyValues( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool includesSubentities( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr predicate( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr prefetchRelationshipKeys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char prepopulateObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipKeyPathsForPrefetching( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint requestType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char resultsAsObjectIDs( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint resultType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool returnsObjectsAsFaults( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAffectedStores_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray stores );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAutoDistinct_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char distinct );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityDescription entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExcludesPendingChanges_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char changes );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setFetchLimit_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint limit );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setIncludeRowData_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char data );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setIncludesPropertyValues_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool values );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setIncludesSubentities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool subentities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPredicate predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPrefetchRelationshipKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPrepopulateObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRelationshipKeyPathsForPrefetching_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray prefetching );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setResultsAsObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char ds );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setResultType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint type );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setReturnsObjectsAsFaults_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool faults );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setShallowInheritance_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char inheritance );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSortDescriptors_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray descriptors );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char shallowInheritance( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sortDescriptors( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr stores( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector affectedStores = "affectedStores";
			public static readonly Selector autoDistinct = "autoDistinct";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entity = "entity";
			public static readonly Selector excludesPendingChanges = "excludesPendingChanges";
			public static readonly Selector fetchLimit = "fetchLimit";
			public static readonly Selector hasChanges = "hasChanges";
			public static readonly Selector includeRowData = "includeRowData";
			public static readonly Selector includesPropertyValues = "includesPropertyValues";
			public static readonly Selector includesSubentities = "includesSubentities";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector predicate = "predicate";
			public static readonly Selector prefetchRelationshipKeys = "prefetchRelationshipKeys";
			public static readonly Selector prepopulateObjects = "prepopulateObjects";
			public static readonly Selector relationshipKeyPathsForPrefetching = "relationshipKeyPathsForPrefetching";
			public static readonly Selector requestType = "requestType";
			public static readonly Selector resultsAsObjectIDs = "resultsAsObjectIDs";
			public static readonly Selector resultType = "resultType";
			public static readonly Selector returnsObjectsAsFaults = "returnsObjectsAsFaults";
			public static readonly Selector setAffectedStores_ = "setAffectedStores:";
			public static readonly Selector setAutoDistinct_ = "setAutoDistinct:";
			public static readonly Selector setEntity_ = "setEntity:";
			public static readonly Selector setExcludesPendingChanges_ = "setExcludesPendingChanges:";
			public static readonly Selector setFetchLimit_ = "setFetchLimit:";
			public static readonly Selector setIncludeRowData_ = "setIncludeRowData:";
			public static readonly Selector setIncludesPropertyValues_ = "setIncludesPropertyValues:";
			public static readonly Selector setIncludesSubentities_ = "setIncludesSubentities:";
			public static readonly Selector setPredicate_ = "setPredicate:";
			public static readonly Selector setPrefetchRelationshipKeys_ = "setPrefetchRelationshipKeys:";
			public static readonly Selector setPrepopulateObjects_ = "setPrepopulateObjects:";
			public static readonly Selector setRelationshipKeyPathsForPrefetching_ = "setRelationshipKeyPathsForPrefetching:";
			public static readonly Selector setResultsAsObjectIDs_ = "setResultsAsObjectIDs:";
			public static readonly Selector setResultType_ = "setResultType:";
			public static readonly Selector setReturnsObjectsAsFaults_ = "setReturnsObjectsAsFaults:";
			public static readonly Selector setShallowInheritance_ = "setShallowInheritance:";
			public static readonly Selector setSortDescriptors_ = "setSortDescriptors:";
			public static readonly Selector shallowInheritance = "shallowInheritance";
			public static readonly Selector sortDescriptors = "sortDescriptors";
			public static readonly Selector stores = "stores";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSExpression ) )]
	public struct NSFetchRequestExpression : IEquatable<NSFetchRequestExpression> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSFetchRequestExpression;
		public static implicit operator NSExpression( NSFetchRequestExpression value ) {
			return new NSExpression( value.Handle );
		}
		public static implicit operator NSObject( NSFetchRequestExpression value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSFetchRequestExpression value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSFetchRequestExpression value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSFetchRequestExpression?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSFetchRequestExpression value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSFetchRequestExpression value1, NSFetchRequestExpression value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSFetchRequestExpression value1, NSFetchRequestExpression value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSFetchRequestExpression( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSFetchRequestExpression alloc() {
			return new NSFetchRequestExpression( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NSExpression expressionForFetch_context_countOnly_( NSExpression fetch, NSExpression context, bool countOnly ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.expressionForFetch_context_countOnly_( ClassHandle, CachedSelectors.expressionForFetch_context_countOnly_, out ___occuredException, sizeof( NSExpression ) + sizeof( NSExpression ) + sizeof( bool ), fetch, context, countOnly );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSExpression( ___result );
		}
		unsafe public NSExpression contextExpression() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.contextExpression( Handle, CachedSelectors.contextExpression, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSExpression( ___result );
		}
		unsafe public NSFetchRequestExpression initForFetch_context_countOnly_( NObjective.RuntimeObject fetch, NObjective.RuntimeObject context, char countOnly ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForFetch_context_countOnly_( Handle, CachedSelectors.initForFetch_context_countOnly_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), fetch, context, countOnly );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSFetchRequestExpression( ___result );
		}
		unsafe public bool isCountOnlyRequest() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isCountOnlyRequest( Handle, CachedSelectors.isCountOnlyRequest, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSExpression requestExpression() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.requestExpression( Handle, CachedSelectors.requestExpression, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSExpression( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr contextExpression( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr expressionForFetch_context_countOnly_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSExpression fetch, NSExpression context, bool countOnly );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForFetch_context_countOnly_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject fetch, NObjective.RuntimeObject context, char countOnly );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isCountOnlyRequest( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr requestExpression( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector contextExpression = "contextExpression";
			public static readonly Selector expressionForFetch_context_countOnly_ = "expressionForFetch:context:countOnly:";
			public static readonly Selector initForFetch_context_countOnly_ = "initForFetch:context:countOnly:";
			public static readonly Selector isCountOnlyRequest = "isCountOnlyRequest";
			public static readonly Selector requestExpression = "requestExpression";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSJoin : IEquatable<NSJoin> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSJoin;
		public static implicit operator NSObject( NSJoin value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSJoin value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSJoin value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSJoin?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSJoin value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSJoin value1, NSJoin value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSJoin value1, NSJoin value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSJoin( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSJoin alloc() {
			return new NSJoin( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NSJoin joinWithSourceAttributeName_destinationAttributeName_( NObjective.RuntimeObject name, NObjective.RuntimeObject destinationAttributeName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.joinWithSourceAttributeName_destinationAttributeName_( ClassHandle, CachedSelectors.joinWithSourceAttributeName_destinationAttributeName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, destinationAttributeName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSJoin( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationAttributeName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationAttributeName( Handle, CachedSelectors.destinationAttributeName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSJoin initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSJoin( ___result );
		}
		unsafe public NSJoin initWithSourceAttributeName_destinationAttributeName_( NObjective.RuntimeObject name, NObjective.RuntimeObject destinationAttributeName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSourceAttributeName_destinationAttributeName_( Handle, CachedSelectors.initWithSourceAttributeName_destinationAttributeName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, destinationAttributeName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSJoin( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceAttributeName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceAttributeName( Handle, CachedSelectors.sourceAttributeName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationAttributeName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSourceAttributeName_destinationAttributeName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, NObjective.RuntimeObject destinationAttributeName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr joinWithSourceAttributeName_destinationAttributeName_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, NObjective.RuntimeObject destinationAttributeName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceAttributeName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector destinationAttributeName = "destinationAttributeName";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector initWithSourceAttributeName_destinationAttributeName_ = "initWithSourceAttributeName:destinationAttributeName:";
			public static readonly Selector joinWithSourceAttributeName_destinationAttributeName_ = "joinWithSourceAttributeName:destinationAttributeName:";
			public static readonly Selector sourceAttributeName = "sourceAttributeName";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMutableDictionary ) )]
	public struct NSKnownKeysDictionary : IEquatable<NSKnownKeysDictionary> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSKnownKeysDictionary;
		public static implicit operator NSMutableDictionary( NSKnownKeysDictionary value ) {
			return new NSMutableDictionary( value.Handle );
		}
		public static implicit operator NSDictionary( NSKnownKeysDictionary value ) {
			return new NSDictionary( value.Handle );
		}
		public static implicit operator NSObject( NSKnownKeysDictionary value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSKnownKeysDictionary value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSKnownKeysDictionary value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSKnownKeysDictionary?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSKnownKeysDictionary value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSKnownKeysDictionary value1, NSKnownKeysDictionary value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSKnownKeysDictionary value1, NSKnownKeysDictionary value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSKnownKeysDictionary( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSKnownKeysDictionary alloc() {
			return new NSKnownKeysDictionary( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSKnownKeysDictionary initForKeys_( NObjective.RuntimeObject keys ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForKeys_( Handle, CachedSelectors.initForKeys_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSKnownKeysDictionary( ___result );
		}
		unsafe public NSKnownKeysDictionary initWithSearchStrategy_( NObjective.RuntimeObject strategy ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSearchStrategy_( Handle, CachedSelectors.initWithSearchStrategy_, out ___occuredException, sizeof( NObjective.RuntimeObject ), strategy );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSKnownKeysDictionary( ___result );
		}
		unsafe public NObjective.RuntimeObject mapping() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mapping( Handle, CachedSelectors.mapping, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setValue_atIndex_( NObjective.RuntimeObject value, uint atIndex ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValue_atIndex_( Handle, CachedSelectors.setValue_atIndex_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( uint ), value, atIndex );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValues_( System.IntPtr values ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValues_( Handle, CachedSelectors.setValues_, out ___occuredException, sizeof( System.IntPtr ), values );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueAtIndex_( uint index ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueAtIndex_( Handle, CachedSelectors.valueAtIndex_, out ___occuredException, sizeof( uint ), index );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public System.IntPtr values() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.values( Handle, CachedSelectors.values, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSearchStrategy_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject strategy );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mapping( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_atIndex_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, uint atIndex );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValues_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr values );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueAtIndex_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint index );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr values( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initForKeys_ = "initForKeys:";
			public static readonly Selector initWithSearchStrategy_ = "initWithSearchStrategy:";
			public static readonly Selector mapping = "mapping";
			public static readonly Selector setValue_atIndex_ = "setValue:atIndex:";
			public static readonly Selector setValues_ = "setValues:";
			public static readonly Selector valueAtIndex_ = "valueAtIndex:";
			public static readonly Selector values = "values";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSKnownKeysDictionary ) )]
	public struct NSKnownKeysDictionary1 : IEquatable<NSKnownKeysDictionary1> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSKnownKeysDictionary1;
		public static implicit operator NSKnownKeysDictionary( NSKnownKeysDictionary1 value ) {
			return new NSKnownKeysDictionary( value.Handle );
		}
		public static implicit operator NSMutableDictionary( NSKnownKeysDictionary1 value ) {
			return new NSMutableDictionary( value.Handle );
		}
		public static implicit operator NSDictionary( NSKnownKeysDictionary1 value ) {
			return new NSDictionary( value.Handle );
		}
		public static implicit operator NSObject( NSKnownKeysDictionary1 value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSKnownKeysDictionary1 value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSKnownKeysDictionary1 value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSKnownKeysDictionary1?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSKnownKeysDictionary1 value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSKnownKeysDictionary1 value1, NSKnownKeysDictionary1 value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSKnownKeysDictionary1 value1, NSKnownKeysDictionary1 value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSKnownKeysDictionary1( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSKnownKeysDictionary1 alloc() {
			return new NSKnownKeysDictionary1( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeClass classForCoder() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.classForCoder( Handle, CachedSelectors.classForCoder, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSKnownKeysDictionary1 initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSKnownKeysDictionary1( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass classForCoder( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector classForCoder = "classForCoder";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector release = "release";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSKnownKeysMappingStrategy : IEquatable<NSKnownKeysMappingStrategy> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSKnownKeysMappingStrategy;
		public static implicit operator NSObject( NSKnownKeysMappingStrategy value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSKnownKeysMappingStrategy value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSKnownKeysMappingStrategy value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSKnownKeysMappingStrategy?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSKnownKeysMappingStrategy value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSKnownKeysMappingStrategy value1, NSKnownKeysMappingStrategy value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSKnownKeysMappingStrategy value1, NSKnownKeysMappingStrategy value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSKnownKeysMappingStrategy( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSKnownKeysMappingStrategy alloc() {
			return new NSKnownKeysMappingStrategy( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint fastIndexForKnownKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fastIndexForKnownKey_( Handle, CachedSelectors.fastIndexForKnownKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint indexForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.indexForKey_( Handle, CachedSelectors.indexForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NSKnownKeysMappingStrategy initForKeys_( NObjective.RuntimeObject keys ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForKeys_( Handle, CachedSelectors.initForKeys_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSKnownKeysMappingStrategy( ___result );
		}
		unsafe public NSKnownKeysMappingStrategy initForKeys_count_( System.IntPtr keys, uint count ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForKeys_count_( Handle, CachedSelectors.initForKeys_count_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( uint ), keys, count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSKnownKeysMappingStrategy( ___result );
		}
		unsafe public NSKnownKeysMappingStrategy initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSKnownKeysMappingStrategy( ___result );
		}
		unsafe public System.IntPtr keys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.keys( Handle, CachedSelectors.keys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint length() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.length( Handle, CachedSelectors.length, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint fastIndexForKnownKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint indexForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForKeys_count_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr keys, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr keys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint length( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector fastIndexForKnownKey_ = "fastIndexForKnownKey:";
			public static readonly Selector indexForKey_ = "indexForKey:";
			public static readonly Selector initForKeys_ = "initForKeys:";
			public static readonly Selector initForKeys_count_ = "initForKeys:count:";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector keys = "keys";
			public static readonly Selector length = "length";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSKnownKeysMappingStrategy ) )]
	public struct NSKnownKeysMappingStrategy1 : IEquatable<NSKnownKeysMappingStrategy1> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSKnownKeysMappingStrategy1;
		public static implicit operator NSKnownKeysMappingStrategy( NSKnownKeysMappingStrategy1 value ) {
			return new NSKnownKeysMappingStrategy( value.Handle );
		}
		public static implicit operator NSObject( NSKnownKeysMappingStrategy1 value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSKnownKeysMappingStrategy1 value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSKnownKeysMappingStrategy1 value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSKnownKeysMappingStrategy1?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSKnownKeysMappingStrategy1 value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSKnownKeysMappingStrategy1 value1, NSKnownKeysMappingStrategy1 value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSKnownKeysMappingStrategy1 value1, NSKnownKeysMappingStrategy1 value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSKnownKeysMappingStrategy1( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSKnownKeysMappingStrategy1 alloc() {
			return new NSKnownKeysMappingStrategy1( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeClass classForCoder() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.classForCoder( Handle, CachedSelectors.classForCoder, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass classForCoder( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector classForCoder = "classForCoder";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector release = "release";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSManagedObject : IEquatable<NSManagedObject> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSManagedObject;
		public static implicit operator NSObject( NSManagedObject value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSManagedObject value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSManagedObject value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSManagedObject?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSManagedObject value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSManagedObject value1, NSManagedObject value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSManagedObject value1, NSManagedObject value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSManagedObject( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSManagedObject alloc() {
			return new NSManagedObject( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject alloc_10_4() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.alloc_10_4( ClassHandle, CachedSelectors.alloc_10_4, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static uint allocBatch_withEntity_count_( System.IntPtr batch, NObjective.RuntimeObject withEntity, uint count ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allocBatch_withEntity_count_( ClassHandle, CachedSelectors.allocBatch_withEntity_count_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( NObjective.RuntimeObject ) + sizeof( uint ), batch, withEntity, count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public static NObjective.RuntimeObject allocWithEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allocWithEntity_( ClassHandle, CachedSelectors.allocWithEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static char automaticallyNotifiesObserversForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.automaticallyNotifiesObserversForKey_( ClassHandle, CachedSelectors.automaticallyNotifiesObserversForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeObject batchAllocateWithEntity_insertIntoManagedObjectContext_count_( NObjective.RuntimeObject entity, NObjective.RuntimeObject insertIntoManagedObjectContext, uint count ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.batchAllocateWithEntity_insertIntoManagedObjectContext_count_( ClassHandle, CachedSelectors.batchAllocateWithEntity_insertIntoManagedObjectContext_count_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( uint ), entity, insertIntoManagedObjectContext, count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static NObjective.RuntimeClass classForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.classForEntity_( ClassHandle, CachedSelectors.classForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static void __release() {
			RuntimeObject ___occuredException;
			NativeMethods.__release( ClassHandle, CachedSelectors.__release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void awakeFromFetch() {
			RuntimeObject ___occuredException;
			NativeMethods.awakeFromFetch( Handle, CachedSelectors.awakeFromFetch, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void awakeFromInsert() {
			RuntimeObject ___occuredException;
			NativeMethods.awakeFromInsert( Handle, CachedSelectors.awakeFromInsert, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSDictionary changedValues() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.changedValues( Handle, CachedSelectors.changedValues, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSDictionary committedValuesForKeys_( NSArray keys ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.committedValuesForKeys_( Handle, CachedSelectors.committedValuesForKeys_, out ___occuredException, sizeof( NSArray ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NObjective.RuntimeObject dictionaryWithValuesForKeys_( NObjective.RuntimeObject keys ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.dictionaryWithValuesForKeys_( Handle, CachedSelectors.dictionaryWithValuesForKeys_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void didAccessValueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			NativeMethods.didAccessValueForKey_( Handle, CachedSelectors.didAccessValueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didChange_valuesAtIndexes_forKey_( uint change, NObjective.RuntimeObject valuesAtIndexes, NObjective.RuntimeObject forKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.didChange_valuesAtIndexes_forKey_( Handle, CachedSelectors.didChange_valuesAtIndexes_forKey_, out ___occuredException, sizeof( uint ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), change, valuesAtIndexes, forKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didChangeValueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			NativeMethods.didChangeValueForKey_( Handle, CachedSelectors.didChangeValueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didChangeValueForKey_withSetMutation_usingObjects_( string key, NSKeyValueSetMutationKind withSetMutation, NSSet usingObjects ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			NativeMethods.didChangeValueForKey_withSetMutation_usingObjects_( Handle, CachedSelectors.didChangeValueForKey_withSetMutation_usingObjects_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSKeyValueSetMutationKind ) + sizeof( NSSet ), ___wrappedkey, withSetMutation, usingObjects );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didFireFault() {
			RuntimeObject ___occuredException;
			NativeMethods.didFireFault( Handle, CachedSelectors.didFireFault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didRefresh_( char refresh ) {
			RuntimeObject ___occuredException;
			NativeMethods.didRefresh_( Handle, CachedSelectors.didRefresh_, out ___occuredException, sizeof( char ), refresh );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didSave() {
			RuntimeObject ___occuredException;
			NativeMethods.didSave( Handle, CachedSelectors.didSave, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void didTurnIntoFault() {
			RuntimeObject ___occuredException;
			NativeMethods.didTurnIntoFault( Handle, CachedSelectors.didTurnIntoFault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSEntityDescription entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public uint faultingState() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.faultingState( Handle, CachedSelectors.faultingState, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public bool hasFaultForRelationshipNamed_( string named ) {
			RuntimeObject ___occuredException;
			var ___wrappednamed = Runtime.CreateStringProxy( named );
			var ___result = NativeMethods.hasFaultForRelationshipNamed_( Handle, CachedSelectors.hasFaultForRelationshipNamed_, out ___occuredException, sizeof( IntPtr ), ___wrappednamed );
			Runtime.ReleaseNativeObject( ___wrappednamed );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char implementsSelector_( NObjective.Selector selector ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.implementsSelector_( Handle, CachedSelectors.implementsSelector_, out ___occuredException, sizeof( NObjective.Selector ), selector );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSManagedObject initWithEntity_insertIntoManagedObjectContext_( NSEntityDescription entity, NSManagedObjectContext insertIntoManagedObjectContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_insertIntoManagedObjectContext_( Handle, CachedSelectors.initWithEntity_insertIntoManagedObjectContext_, out ___occuredException, sizeof( NSEntityDescription ) + sizeof( NSManagedObjectContext ), entity, insertIntoManagedObjectContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObject( ___result );
		}
		unsafe public bool isDeleted() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isDeleted( Handle, CachedSelectors.isDeleted, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isInserted() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isInserted( Handle, CachedSelectors.isInserted, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isRelationshipForKeyFault_( NObjective.RuntimeObject fault ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isRelationshipForKeyFault_( Handle, CachedSelectors.isRelationshipForKeyFault_, out ___occuredException, sizeof( NObjective.RuntimeObject ), fault );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isUpdated() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isUpdated( Handle, CachedSelectors.isUpdated, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSManagedObjectContext managedObjectContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectContext( Handle, CachedSelectors.managedObjectContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectContext( ___result );
		}
		unsafe public NObjective.RuntimeObject mutableArrayValueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mutableArrayValueForKey_( Handle, CachedSelectors.mutableArrayValueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mutableSetValueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mutableSetValueForKey_( Handle, CachedSelectors.mutableSetValueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSManagedObjectID objectID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectID( Handle, CachedSelectors.objectID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectID( ___result );
		}
		unsafe public IntPtr observationInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.observationInfo( Handle, CachedSelectors.observationInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject primitiveValueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			var ___result = NativeMethods.primitiveValueForKey_( Handle, CachedSelectors.primitiveValueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setNilValueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			NativeMethods.setNilValueForKey_( Handle, CachedSelectors.setNilValueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setObservationInfo_( IntPtr info ) {
			RuntimeObject ___occuredException;
			NativeMethods.setObservationInfo_( Handle, CachedSelectors.setObservationInfo_, out ___occuredException, sizeof( IntPtr ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPrimitiveValue_forKey_( NObjective.RuntimeObject value, string forKey ) {
			RuntimeObject ___occuredException;
			var ___wrappedforKey = Runtime.CreateStringProxy( forKey );
			NativeMethods.setPrimitiveValue_forKey_( Handle, CachedSelectors.setPrimitiveValue_forKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( IntPtr ), value, ___wrappedforKey );
			Runtime.ReleaseNativeObject( ___wrappedforKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValue_forKey_( NObjective.RuntimeObject value, string forKey ) {
			RuntimeObject ___occuredException;
			var ___wrappedforKey = Runtime.CreateStringProxy( forKey );
			NativeMethods.setValue_forKey_( Handle, CachedSelectors.setValue_forKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( IntPtr ), value, ___wrappedforKey );
			Runtime.ReleaseNativeObject( ___wrappedforKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValue_forUndefinedKey_( NObjective.RuntimeObject value, NObjective.RuntimeObject forUndefinedKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValue_forUndefinedKey_( Handle, CachedSelectors.setValue_forUndefinedKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, forUndefinedKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValuesForKeysWithDictionary_( NObjective.RuntimeObject dictionary ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValuesForKeysWithDictionary_( Handle, CachedSelectors.setValuesForKeysWithDictionary_, out ___occuredException, sizeof( NObjective.RuntimeObject ), dictionary );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool validateForDelete_( ref NSError delete ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.validateForDelete_( Handle, CachedSelectors.validateForDelete_, out ___occuredException, sizeof( IntPtr ), ref delete );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool validateForInsert_( ref NSError insert ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.validateForInsert_( Handle, CachedSelectors.validateForInsert_, out ___occuredException, sizeof( IntPtr ), ref insert );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool validateForUpdate_( ref NSError update ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.validateForUpdate_( Handle, CachedSelectors.validateForUpdate_, out ___occuredException, sizeof( IntPtr ), ref update );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool validateValue_forKey_error_( IntPtr value, string forKey, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___wrappedforKey = Runtime.CreateStringProxy( forKey );
			var ___result = NativeMethods.validateValue_forKey_error_( Handle, CachedSelectors.validateValue_forKey_error_, out ___occuredException, sizeof( IntPtr ) + sizeof( IntPtr ) + sizeof( IntPtr ), value, ___wrappedforKey, ref error );
			Runtime.ReleaseNativeObject( ___wrappedforKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject valueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject valueForUndefinedKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForUndefinedKey_( Handle, CachedSelectors.valueForUndefinedKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void willAccessValueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			NativeMethods.willAccessValueForKey_( Handle, CachedSelectors.willAccessValueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willChange_valuesAtIndexes_forKey_( uint change, NObjective.RuntimeObject valuesAtIndexes, NObjective.RuntimeObject forKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.willChange_valuesAtIndexes_forKey_( Handle, CachedSelectors.willChange_valuesAtIndexes_forKey_, out ___occuredException, sizeof( uint ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), change, valuesAtIndexes, forKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willChangeValueForKey_( string key ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			NativeMethods.willChangeValueForKey_( Handle, CachedSelectors.willChangeValueForKey_, out ___occuredException, sizeof( IntPtr ), ___wrappedkey );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willChangeValueForKey_withSetMutation_usingObjects_( string key, NSKeyValueSetMutationKind withSetMutation, NSSet usingObjects ) {
			RuntimeObject ___occuredException;
			var ___wrappedkey = Runtime.CreateStringProxy( key );
			NativeMethods.willChangeValueForKey_withSetMutation_usingObjects_( Handle, CachedSelectors.willChangeValueForKey_withSetMutation_usingObjects_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSKeyValueSetMutationKind ) + sizeof( NSSet ), ___wrappedkey, withSetMutation, usingObjects );
			Runtime.ReleaseNativeObject( ___wrappedkey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willFireFault() {
			RuntimeObject ___occuredException;
			NativeMethods.willFireFault( Handle, CachedSelectors.willFireFault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willRefresh_( char refresh ) {
			RuntimeObject ___occuredException;
			NativeMethods.willRefresh_( Handle, CachedSelectors.willRefresh_, out ___occuredException, sizeof( char ), refresh );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willSave() {
			RuntimeObject ___occuredException;
			NativeMethods.willSave( Handle, CachedSelectors.willSave, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willTurnIntoFault() {
			RuntimeObject ___occuredException;
			NativeMethods.willTurnIntoFault( Handle, CachedSelectors.willTurnIntoFault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void __release( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr alloc_10_4( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint allocBatch_withEntity_count_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr batch, NObjective.RuntimeObject withEntity, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr allocWithEntity_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char automaticallyNotifiesObserversForKey_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void awakeFromFetch( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void awakeFromInsert( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr batchAllocateWithEntity_insertIntoManagedObjectContext_count_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject insertIntoManagedObjectContext, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr changedValues( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass classForEntity_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr committedValuesForKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr dictionaryWithValuesForKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didAccessValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didChange_valuesAtIndexes_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint change, NObjective.RuntimeObject valuesAtIndexes, NObjective.RuntimeObject forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didChangeValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didChangeValueForKey_withSetMutation_usingObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key, NSKeyValueSetMutationKind withSetMutation, NSSet usingObjects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didFireFault( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didRefresh_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char refresh );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didSave( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didTurnIntoFault( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint faultingState( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool hasFaultForRelationshipNamed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr named );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char implementsSelector_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.Selector selector );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_insertIntoManagedObjectContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityDescription entity, NSManagedObjectContext insertIntoManagedObjectContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isDeleted( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isInserted( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isRelationshipForKeyFault_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject fault );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isUpdated( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mutableArrayValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mutableSetValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr observationInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr primitiveValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setNilValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setObservationInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPrimitiveValue_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, IntPtr forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, IntPtr forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_forUndefinedKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject forUndefinedKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValuesForKeysWithDictionary_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject dictionary );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool validateForDelete_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ref NSError delete );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool validateForInsert_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ref NSError insert );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool validateForUpdate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ref NSError update );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool validateValue_forKey_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr value, IntPtr forKey, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForUndefinedKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willAccessValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willChange_valuesAtIndexes_forKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint change, NObjective.RuntimeObject valuesAtIndexes, NObjective.RuntimeObject forKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willChangeValueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willChangeValueForKey_withSetMutation_usingObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr key, NSKeyValueSetMutationKind withSetMutation, NSSet usingObjects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willFireFault( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willRefresh_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char refresh );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willSave( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willTurnIntoFault( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector __release = "__release";
			public static readonly Selector alloc_10_4 = "alloc_10_4";
			public static readonly Selector allocBatch_withEntity_count_ = "allocBatch:withEntity:count:";
			public static readonly Selector allocWithEntity_ = "allocWithEntity:";
			public static readonly Selector automaticallyNotifiesObserversForKey_ = "automaticallyNotifiesObserversForKey:";
			public static readonly Selector awakeFromFetch = "awakeFromFetch";
			public static readonly Selector awakeFromInsert = "awakeFromInsert";
			public static readonly Selector batchAllocateWithEntity_insertIntoManagedObjectContext_count_ = "batchAllocateWithEntity:insertIntoManagedObjectContext:count:";
			public static readonly Selector changedValues = "changedValues";
			public static readonly Selector classForEntity_ = "classForEntity:";
			public static readonly Selector committedValuesForKeys_ = "committedValuesForKeys:";
			public static readonly Selector dictionaryWithValuesForKeys_ = "dictionaryWithValuesForKeys:";
			public static readonly Selector didAccessValueForKey_ = "didAccessValueForKey:";
			public static readonly Selector didChange_valuesAtIndexes_forKey_ = "didChange:valuesAtIndexes:forKey:";
			public static readonly Selector didChangeValueForKey_ = "didChangeValueForKey:";
			public static readonly Selector didChangeValueForKey_withSetMutation_usingObjects_ = "didChangeValueForKey:withSetMutation:usingObjects:";
			public static readonly Selector didFireFault = "didFireFault";
			public static readonly Selector didRefresh_ = "didRefresh:";
			public static readonly Selector didSave = "didSave";
			public static readonly Selector didTurnIntoFault = "didTurnIntoFault";
			public static readonly Selector entity = "entity";
			public static readonly Selector faultingState = "faultingState";
			public static readonly Selector hasFaultForRelationshipNamed_ = "hasFaultForRelationshipNamed:";
			public static readonly Selector implementsSelector_ = "implementsSelector:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithEntity_insertIntoManagedObjectContext_ = "initWithEntity:insertIntoManagedObjectContext:";
			public static readonly Selector isDeleted = "isDeleted";
			public static readonly Selector isInserted = "isInserted";
			public static readonly Selector isRelationshipForKeyFault_ = "isRelationshipForKeyFault:";
			public static readonly Selector isUpdated = "isUpdated";
			public static readonly Selector managedObjectContext = "managedObjectContext";
			public static readonly Selector mutableArrayValueForKey_ = "mutableArrayValueForKey:";
			public static readonly Selector mutableSetValueForKey_ = "mutableSetValueForKey:";
			public static readonly Selector objectID = "objectID";
			public static readonly Selector observationInfo = "observationInfo";
			public static readonly Selector primitiveValueForKey_ = "primitiveValueForKey:";
			public static readonly Selector release = "release";
			public static readonly Selector setNilValueForKey_ = "setNilValueForKey:";
			public static readonly Selector setObservationInfo_ = "setObservationInfo:";
			public static readonly Selector setPrimitiveValue_forKey_ = "setPrimitiveValue:forKey:";
			public static readonly Selector setValue_forKey_ = "setValue:forKey:";
			public static readonly Selector setValue_forUndefinedKey_ = "setValue:forUndefinedKey:";
			public static readonly Selector setValuesForKeysWithDictionary_ = "setValuesForKeysWithDictionary:";
			public static readonly Selector validateForDelete_ = "validateForDelete:";
			public static readonly Selector validateForInsert_ = "validateForInsert:";
			public static readonly Selector validateForUpdate_ = "validateForUpdate:";
			public static readonly Selector validateValue_forKey_error_ = "validateValue:forKey:error:";
			public static readonly Selector valueForKey_ = "valueForKey:";
			public static readonly Selector valueForUndefinedKey_ = "valueForUndefinedKey:";
			public static readonly Selector willAccessValueForKey_ = "willAccessValueForKey:";
			public static readonly Selector willChange_valuesAtIndexes_forKey_ = "willChange:valuesAtIndexes:forKey:";
			public static readonly Selector willChangeValueForKey_ = "willChangeValueForKey:";
			public static readonly Selector willChangeValueForKey_withSetMutation_usingObjects_ = "willChangeValueForKey:withSetMutation:usingObjects:";
			public static readonly Selector willFireFault = "willFireFault";
			public static readonly Selector willRefresh_ = "willRefresh:";
			public static readonly Selector willSave = "willSave";
			public static readonly Selector willTurnIntoFault = "willTurnIntoFault";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSManagedObjectContext : IEquatable<NSManagedObjectContext> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSManagedObjectContext;
		public static implicit operator NSObject( NSManagedObjectContext value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSManagedObjectContext value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSManagedObjectContext value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSManagedObjectContext?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSManagedObjectContext value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSManagedObjectContext value1, NSManagedObjectContext value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSManagedObjectContext value1, NSManagedObjectContext value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSManagedObjectContext( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSManagedObjectContext alloc() {
			return new NSManagedObjectContext( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void assignObject_toPersistentStore_( NObjective.RuntimeObject @object, NSPersistentStore toPersistentStore ) {
			RuntimeObject ___occuredException;
			NativeMethods.assignObject_toPersistentStore_( Handle, CachedSelectors.assignObject_toPersistentStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NSPersistentStore ), @object, toPersistentStore );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char commitEditing() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.commitEditing( Handle, CachedSelectors.commitEditing, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void commitEditingWithDelegate_didCommitSelector_contextInfo_( NObjective.RuntimeObject @delegate, NObjective.Selector didCommitSelector, System.IntPtr contextInfo ) {
			RuntimeObject ___occuredException;
			NativeMethods.commitEditingWithDelegate_didCommitSelector_contextInfo_( Handle, CachedSelectors.commitEditingWithDelegate_didCommitSelector_contextInfo_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.Selector ) + sizeof( System.IntPtr ), @delegate, didCommitSelector, contextInfo );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint countForFetchRequest_error_( NSFetchRequest request, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.countForFetchRequest_error_( Handle, CachedSelectors.countForFetchRequest_error_, out ___occuredException, sizeof( NSFetchRequest ) + sizeof( IntPtr ), request, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NSSet deletedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.deletedObjects( Handle, CachedSelectors.deletedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSet( ___result );
		}
		unsafe public void deleteObject_( NSManagedObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.deleteObject_( Handle, CachedSelectors.deleteObject_, out ___occuredException, sizeof( NSManagedObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void detectConflictsForObject_( NSManagedObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.detectConflictsForObject_( Handle, CachedSelectors.detectConflictsForObject_, out ___occuredException, sizeof( NSManagedObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void discardEditing() {
			RuntimeObject ___occuredException;
			NativeMethods.discardEditing( Handle, CachedSelectors.discardEditing, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSArray executeFetchRequest_error_( NSFetchRequest request, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeFetchRequest_error_( Handle, CachedSelectors.executeFetchRequest_error_, out ___occuredException, sizeof( NSFetchRequest ) + sizeof( IntPtr ), request, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public void handlePeerContextDidSaveNotification_( NObjective.RuntimeObject notification ) {
			RuntimeObject ___occuredException;
			NativeMethods.handlePeerContextDidSaveNotification_( Handle, CachedSelectors.handlePeerContextDidSaveNotification_, out ___occuredException, sizeof( NObjective.RuntimeObject ), notification );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool hasChanges() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasChanges( Handle, CachedSelectors.hasChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSManagedObjectContext initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectContext( ___result );
		}
		unsafe public NSSet insertedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.insertedObjects( Handle, CachedSelectors.insertedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSet( ___result );
		}
		unsafe public void insertObject_( NSManagedObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.insertObject_( Handle, CachedSelectors.insertObject_, out ___occuredException, sizeof( NSManagedObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool isEditing() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isEditing( Handle, CachedSelectors.isEditing, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void @lock() {
			RuntimeObject ___occuredException;
			NativeMethods.@lock( Handle, CachedSelectors.@lock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void lockObjectStore() {
			RuntimeObject ___occuredException;
			NativeMethods.lockObjectStore( Handle, CachedSelectors.lockObjectStore, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void mergeChangesFromContextDidSaveNotification_( NSNotification notification ) {
			RuntimeObject ___occuredException;
			NativeMethods.mergeChangesFromContextDidSaveNotification_( Handle, CachedSelectors.mergeChangesFromContextDidSaveNotification_, out ___occuredException, sizeof( NSNotification ), notification );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject mergePolicy() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mergePolicy( Handle, CachedSelectors.mergePolicy, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void objectDidBeginEditing_( NObjective.RuntimeObject editing ) {
			RuntimeObject ___occuredException;
			NativeMethods.objectDidBeginEditing_( Handle, CachedSelectors.objectDidBeginEditing_, out ___occuredException, sizeof( NObjective.RuntimeObject ), editing );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void objectDidEndEditing_( NObjective.RuntimeObject editing ) {
			RuntimeObject ___occuredException;
			NativeMethods.objectDidEndEditing_( Handle, CachedSelectors.objectDidEndEditing_, out ___occuredException, sizeof( NObjective.RuntimeObject ), editing );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSManagedObject objectRegisteredForID_( NSManagedObjectID id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectRegisteredForID_( Handle, CachedSelectors.objectRegisteredForID_, out ___occuredException, sizeof( NSManagedObjectID ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObject( ___result );
		}
		unsafe public NSManagedObject objectWithID_( NSManagedObjectID id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectWithID_( Handle, CachedSelectors.objectWithID_, out ___occuredException, sizeof( NSManagedObjectID ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObject( ___result );
		}
		unsafe public void observeValueForKeyPath_ofObject_change_context_( string path, NObjective.RuntimeObject ofObject, NSDictionary change, IntPtr context ) {
			RuntimeObject ___occuredException;
			var ___wrappedpath = Runtime.CreateStringProxy( path );
			NativeMethods.observeValueForKeyPath_ofObject_change_context_( Handle, CachedSelectors.observeValueForKeyPath_ofObject_change_context_, out ___occuredException, sizeof( IntPtr ) + sizeof( NObjective.RuntimeObject ) + sizeof( NSDictionary ) + sizeof( IntPtr ), ___wrappedpath, ofObject, change, context );
			Runtime.ReleaseNativeObject( ___wrappedpath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool obtainPermanentIDsForObjects_error_( NSArray objects, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.obtainPermanentIDsForObjects_error_( Handle, CachedSelectors.obtainPermanentIDsForObjects_error_, out ___occuredException, sizeof( NSArray ) + sizeof( IntPtr ), objects, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSPersistentStoreCoordinator persistentStoreCoordinator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStoreCoordinator( Handle, CachedSelectors.persistentStoreCoordinator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStoreCoordinator( ___result );
		}
		unsafe public void processPendingChanges() {
			RuntimeObject ___occuredException;
			NativeMethods.processPendingChanges( Handle, CachedSelectors.processPendingChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool propagatesDeletesAtEndOfEvent() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propagatesDeletesAtEndOfEvent( Handle, CachedSelectors.propagatesDeletesAtEndOfEvent, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void redo() {
			RuntimeObject ___occuredException;
			NativeMethods.redo( Handle, CachedSelectors.redo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void refreshObject_mergeChanges_( NSManagedObject @object, bool mergeChanges ) {
			RuntimeObject ___occuredException;
			NativeMethods.refreshObject_mergeChanges_( Handle, CachedSelectors.refreshObject_mergeChanges_, out ___occuredException, sizeof( NSManagedObject ) + sizeof( bool ), @object, mergeChanges );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSSet registeredObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.registeredObjects( Handle, CachedSelectors.registeredObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSet( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void reset() {
			RuntimeObject ___occuredException;
			NativeMethods.reset( Handle, CachedSelectors.reset, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool retainsRegisteredObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainsRegisteredObjects( Handle, CachedSelectors.retainsRegisteredObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void rollback() {
			RuntimeObject ___occuredException;
			NativeMethods.rollback( Handle, CachedSelectors.rollback, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool save_( ref NSError save ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.save_( Handle, CachedSelectors.save_, out ___occuredException, sizeof( IntPtr ), ref save );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setMergePolicy_( NObjective.RuntimeObject policy ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMergePolicy_( Handle, CachedSelectors.setMergePolicy_, out ___occuredException, sizeof( NObjective.RuntimeObject ), policy );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPersistentStoreCoordinator_( NSPersistentStoreCoordinator coordinator ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPersistentStoreCoordinator_( Handle, CachedSelectors.setPersistentStoreCoordinator_, out ___occuredException, sizeof( NSPersistentStoreCoordinator ), coordinator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPropagatesDeletesAtEndOfEvent_( bool @event ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPropagatesDeletesAtEndOfEvent_( Handle, CachedSelectors.setPropagatesDeletesAtEndOfEvent_, out ___occuredException, sizeof( bool ), @event );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRetainsRegisteredObjects_( bool objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRetainsRegisteredObjects_( Handle, CachedSelectors.setRetainsRegisteredObjects_, out ___occuredException, sizeof( bool ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setStalenessInterval_( double interval ) {
			RuntimeObject ___occuredException;
			NativeMethods.setStalenessInterval_( Handle, CachedSelectors.setStalenessInterval_, out ___occuredException, sizeof( double ), interval );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUndoManager_( NSUndoManager manager ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUndoManager_( Handle, CachedSelectors.setUndoManager_, out ___occuredException, sizeof( NSUndoManager ), manager );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public double stalenessInterval() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.stalenessInterval( Handle, CachedSelectors.stalenessInterval, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool tryLock() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.tryLock( Handle, CachedSelectors.tryLock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void undo() {
			RuntimeObject ___occuredException;
			NativeMethods.undo( Handle, CachedSelectors.undo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSUndoManager undoManager() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.undoManager( Handle, CachedSelectors.undoManager, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSUndoManager( ___result );
		}
		unsafe public void unlock() {
			RuntimeObject ___occuredException;
			NativeMethods.unlock( Handle, CachedSelectors.unlock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void unlockObjectStore() {
			RuntimeObject ___occuredException;
			NativeMethods.unlockObjectStore( Handle, CachedSelectors.unlockObjectStore, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSSet updatedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.updatedObjects( Handle, CachedSelectors.updatedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSet( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void assignObject_toPersistentStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NSPersistentStore toPersistentStore );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char commitEditing( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void commitEditingWithDelegate_didCommitSelector_contextInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @delegate, NObjective.Selector didCommitSelector, System.IntPtr contextInfo );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint countForFetchRequest_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSFetchRequest request, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr deletedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void deleteObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void detectConflictsForObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void discardEditing( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeFetchRequest_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSFetchRequest request, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void handlePeerContextDidSaveNotification_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject notification );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool hasChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr insertedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void insertObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isEditing( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void @lock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void lockObjectStore( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void mergeChangesFromContextDidSaveNotification_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSNotification notification );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mergePolicy( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void objectDidBeginEditing_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject editing );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void objectDidEndEditing_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject editing );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectRegisteredForID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectID id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectWithID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectID id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void observeValueForKeyPath_ofObject_change_context_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr path, NObjective.RuntimeObject ofObject, NSDictionary change, IntPtr context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool obtainPermanentIDsForObjects_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray objects, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStoreCoordinator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void processPendingChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool propagatesDeletesAtEndOfEvent( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void redo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void refreshObject_mergeChanges_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject @object, bool mergeChanges );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr registeredObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void reset( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool retainsRegisteredObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void rollback( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool save_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, ref NSError save );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMergePolicy_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject policy );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPersistentStoreCoordinator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStoreCoordinator coordinator );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPropagatesDeletesAtEndOfEvent_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool @event );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRetainsRegisteredObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setStalenessInterval_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, double interval );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUndoManager_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSUndoManager manager );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_fpret_eh2" )]
			public static extern double stalenessInterval( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool tryLock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void undo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr undoManager( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void unlock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void unlockObjectStore( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr updatedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector assignObject_toPersistentStore_ = "assignObject:toPersistentStore:";
			public static readonly Selector commitEditing = "commitEditing";
			public static readonly Selector commitEditingWithDelegate_didCommitSelector_contextInfo_ = "commitEditingWithDelegate:didCommitSelector:contextInfo:";
			public static readonly Selector countForFetchRequest_error_ = "countForFetchRequest:error:";
			public static readonly Selector deletedObjects = "deletedObjects";
			public static readonly Selector deleteObject_ = "deleteObject:";
			public static readonly Selector detectConflictsForObject_ = "detectConflictsForObject:";
			public static readonly Selector discardEditing = "discardEditing";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector executeFetchRequest_error_ = "executeFetchRequest:error:";
			public static readonly Selector handlePeerContextDidSaveNotification_ = "handlePeerContextDidSaveNotification:";
			public static readonly Selector hasChanges = "hasChanges";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector insertedObjects = "insertedObjects";
			public static readonly Selector insertObject_ = "insertObject:";
			public static readonly Selector isEditing = "isEditing";
			public static readonly Selector @lock = "lock";
			public static readonly Selector lockObjectStore = "lockObjectStore";
			public static readonly Selector mergeChangesFromContextDidSaveNotification_ = "mergeChangesFromContextDidSaveNotification:";
			public static readonly Selector mergePolicy = "mergePolicy";
			public static readonly Selector objectDidBeginEditing_ = "objectDidBeginEditing:";
			public static readonly Selector objectDidEndEditing_ = "objectDidEndEditing:";
			public static readonly Selector objectRegisteredForID_ = "objectRegisteredForID:";
			public static readonly Selector objectWithID_ = "objectWithID:";
			public static readonly Selector observeValueForKeyPath_ofObject_change_context_ = "observeValueForKeyPath:ofObject:change:context:";
			public static readonly Selector obtainPermanentIDsForObjects_error_ = "obtainPermanentIDsForObjects:error:";
			public static readonly Selector persistentStoreCoordinator = "persistentStoreCoordinator";
			public static readonly Selector processPendingChanges = "processPendingChanges";
			public static readonly Selector propagatesDeletesAtEndOfEvent = "propagatesDeletesAtEndOfEvent";
			public static readonly Selector redo = "redo";
			public static readonly Selector refreshObject_mergeChanges_ = "refreshObject:mergeChanges:";
			public static readonly Selector registeredObjects = "registeredObjects";
			public static readonly Selector release = "release";
			public static readonly Selector reset = "reset";
			public static readonly Selector retainsRegisteredObjects = "retainsRegisteredObjects";
			public static readonly Selector rollback = "rollback";
			public static readonly Selector save_ = "save:";
			public static readonly Selector setMergePolicy_ = "setMergePolicy:";
			public static readonly Selector setPersistentStoreCoordinator_ = "setPersistentStoreCoordinator:";
			public static readonly Selector setPropagatesDeletesAtEndOfEvent_ = "setPropagatesDeletesAtEndOfEvent:";
			public static readonly Selector setRetainsRegisteredObjects_ = "setRetainsRegisteredObjects:";
			public static readonly Selector setStalenessInterval_ = "setStalenessInterval:";
			public static readonly Selector setUndoManager_ = "setUndoManager:";
			public static readonly Selector stalenessInterval = "stalenessInterval";
			public static readonly Selector tryLock = "tryLock";
			public static readonly Selector undo = "undo";
			public static readonly Selector undoManager = "undoManager";
			public static readonly Selector unlock = "unlock";
			public static readonly Selector unlockObjectStore = "unlockObjectStore";
			public static readonly Selector updatedObjects = "updatedObjects";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSManagedObjectID : IEquatable<NSManagedObjectID> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSManagedObjectID;
		public static implicit operator NSObject( NSManagedObjectID value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSManagedObjectID value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSManagedObjectID value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSManagedObjectID?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSManagedObjectID value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSManagedObjectID value1, NSManagedObjectID value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSManagedObjectID value1, NSManagedObjectID value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSManagedObjectID( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSManagedObjectID alloc() {
			return new NSManagedObjectID( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static int version() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.version( ClassHandle, CachedSelectors.version, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSEntityDescription entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public bool isTemporaryID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isTemporaryID( Handle, CachedSelectors.isTemporaryID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSPersistentStore persistentStore() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStore( Handle, CachedSelectors.persistentStore, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStore( ___result );
		}
		unsafe public NSURL URIRepresentation() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.URIRepresentation( Handle, CachedSelectors.URIRepresentation, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSURL( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isTemporaryID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStore( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr URIRepresentation( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int version( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector entity = "entity";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector isTemporaryID = "isTemporaryID";
			public static readonly Selector persistentStore = "persistentStore";
			public static readonly Selector URIRepresentation = "URIRepresentation";
			public static readonly Selector version = "version";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSManagedObjectModel : IEquatable<NSManagedObjectModel> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSManagedObjectModel;
		public static implicit operator NSObject( NSManagedObjectModel value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSManagedObjectModel value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSManagedObjectModel value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSManagedObjectModel?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSManagedObjectModel value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSManagedObjectModel value1, NSManagedObjectModel value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSManagedObjectModel value1, NSManagedObjectModel value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSManagedObjectModel( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSManagedObjectModel alloc() {
			return new NSManagedObjectModel( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NSManagedObjectModel mergedModelFromBundles_( NSArray bundles ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mergedModelFromBundles_( ClassHandle, CachedSelectors.mergedModelFromBundles_, out ___occuredException, sizeof( NSArray ), bundles );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public static NSManagedObjectModel mergedModelFromBundles_forStoreMetadata_( NSArray bundles, NSDictionary forStoreMetadata ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mergedModelFromBundles_forStoreMetadata_( ClassHandle, CachedSelectors.mergedModelFromBundles_forStoreMetadata_, out ___occuredException, sizeof( NSArray ) + sizeof( NSDictionary ), bundles, forStoreMetadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public static NSManagedObjectModel modelByMergingModels_( NSArray models ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.modelByMergingModels_( ClassHandle, CachedSelectors.modelByMergingModels_, out ___occuredException, sizeof( NSArray ), models );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public static NSManagedObjectModel modelByMergingModels_forStoreMetadata_( NSArray models, NSDictionary forStoreMetadata ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.modelByMergingModels_forStoreMetadata_( ClassHandle, CachedSelectors.modelByMergingModels_forStoreMetadata_, out ___occuredException, sizeof( NSArray ) + sizeof( NSDictionary ), models, forStoreMetadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public NSArray configurations() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.configurations( Handle, CachedSelectors.configurations, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSArray entities() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entities( Handle, CachedSelectors.entities, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSDictionary entitiesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entitiesByName( Handle, CachedSelectors.entitiesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSArray entitiesForConfiguration_( string configuration ) {
			RuntimeObject ___occuredException;
			var ___wrappedconfiguration = Runtime.CreateStringProxy( configuration );
			var ___result = NativeMethods.entitiesForConfiguration_( Handle, CachedSelectors.entitiesForConfiguration_, out ___occuredException, sizeof( IntPtr ), ___wrappedconfiguration );
			Runtime.ReleaseNativeObject( ___wrappedconfiguration );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSDictionary entityVersionHashesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityVersionHashesByName( Handle, CachedSelectors.entityVersionHashesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSFetchRequest fetchRequestFromTemplateWithName_substitutionVariables_( string name, NSDictionary substitutionVariables ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			var ___result = NativeMethods.fetchRequestFromTemplateWithName_substitutionVariables_( Handle, CachedSelectors.fetchRequestFromTemplateWithName_substitutionVariables_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSDictionary ), ___wrappedname, substitutionVariables );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSFetchRequest( ___result );
		}
		unsafe public NSFetchRequest fetchRequestTemplateForName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			var ___result = NativeMethods.fetchRequestTemplateForName_( Handle, CachedSelectors.fetchRequestTemplateForName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSFetchRequest( ___result );
		}
		unsafe public NSDictionary fetchRequestTemplatesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchRequestTemplatesByName( Handle, CachedSelectors.fetchRequestTemplatesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSManagedObjectModel initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public NSManagedObjectModel initWithContentsOfURL_( NSURL url ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithContentsOfURL_( Handle, CachedSelectors.initWithContentsOfURL_, out ___occuredException, sizeof( NSURL ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public NSManagedObjectModel initWithContentsOfURL_forStoreMetadata_( NObjective.RuntimeObject url, NObjective.RuntimeObject forStoreMetadata ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithContentsOfURL_forStoreMetadata_( Handle, CachedSelectors.initWithContentsOfURL_forStoreMetadata_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), url, forStoreMetadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public bool isConfiguration_compatibleWithStoreMetadata_( string configuration, NSDictionary compatibleWithStoreMetadata ) {
			RuntimeObject ___occuredException;
			var ___wrappedconfiguration = Runtime.CreateStringProxy( configuration );
			var ___result = NativeMethods.isConfiguration_compatibleWithStoreMetadata_( Handle, CachedSelectors.isConfiguration_compatibleWithStoreMetadata_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSDictionary ), ___wrappedconfiguration, compatibleWithStoreMetadata );
			Runtime.ReleaseNativeObject( ___wrappedconfiguration );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isEditable() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isEditable( Handle, CachedSelectors.isEditable, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSDictionary localizationDictionary() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.localizationDictionary( Handle, CachedSelectors.localizationDictionary, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public void setEntities_( NSArray entities ) {
			RuntimeObject ___occuredException;
			NativeMethods.setEntities_( Handle, CachedSelectors.setEntities_, out ___occuredException, sizeof( NSArray ), entities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setEntities_forConfiguration_( NSArray entities, string forConfiguration ) {
			RuntimeObject ___occuredException;
			var ___wrappedforConfiguration = Runtime.CreateStringProxy( forConfiguration );
			NativeMethods.setEntities_forConfiguration_( Handle, CachedSelectors.setEntities_forConfiguration_, out ___occuredException, sizeof( NSArray ) + sizeof( IntPtr ), entities, ___wrappedforConfiguration );
			Runtime.ReleaseNativeObject( ___wrappedforConfiguration );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setFetchRequestTemplate_forName_( NSFetchRequest template, string forName ) {
			RuntimeObject ___occuredException;
			var ___wrappedforName = Runtime.CreateStringProxy( forName );
			NativeMethods.setFetchRequestTemplate_forName_( Handle, CachedSelectors.setFetchRequestTemplate_forName_, out ___occuredException, sizeof( NSFetchRequest ) + sizeof( IntPtr ), template, ___wrappedforName );
			Runtime.ReleaseNativeObject( ___wrappedforName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setLocalizationDictionary_( NSDictionary dictionary ) {
			RuntimeObject ___occuredException;
			NativeMethods.setLocalizationDictionary_( Handle, CachedSelectors.setLocalizationDictionary_, out ___occuredException, sizeof( NSDictionary ), dictionary );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setVersionIdentifiers_( NSSet identifiers ) {
			RuntimeObject ___occuredException;
			NativeMethods.setVersionIdentifiers_( Handle, CachedSelectors.setVersionIdentifiers_, out ___occuredException, sizeof( NSSet ), identifiers );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject versionHash() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionHash( Handle, CachedSelectors.versionHash, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSet versionIdentifiers() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionIdentifiers( Handle, CachedSelectors.versionIdentifiers, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSet( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr configurations( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entities( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entitiesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entitiesForConfiguration_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr configuration );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityVersionHashesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequestFromTemplateWithName_substitutionVariables_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name, NSDictionary substitutionVariables );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequestTemplateForName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequestTemplatesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithContentsOfURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithContentsOfURL_forStoreMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url, NObjective.RuntimeObject forStoreMetadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isConfiguration_compatibleWithStoreMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr configuration, NSDictionary compatibleWithStoreMetadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isEditable( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr localizationDictionary( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mergedModelFromBundles_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray bundles );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mergedModelFromBundles_forStoreMetadata_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray bundles, NSDictionary forStoreMetadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr modelByMergingModels_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray models );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr modelByMergingModels_forStoreMetadata_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray models, NSDictionary forStoreMetadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setEntities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray entities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setEntities_forConfiguration_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray entities, IntPtr forConfiguration );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setFetchRequestTemplate_forName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSFetchRequest template, IntPtr forName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setLocalizationDictionary_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary dictionary );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setVersionIdentifiers_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSSet identifiers );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionHash( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionIdentifiers( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector configurations = "configurations";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entities = "entities";
			public static readonly Selector entitiesByName = "entitiesByName";
			public static readonly Selector entitiesForConfiguration_ = "entitiesForConfiguration:";
			public static readonly Selector entityVersionHashesByName = "entityVersionHashesByName";
			public static readonly Selector fetchRequestFromTemplateWithName_substitutionVariables_ = "fetchRequestFromTemplateWithName:substitutionVariables:";
			public static readonly Selector fetchRequestTemplateForName_ = "fetchRequestTemplateForName:";
			public static readonly Selector fetchRequestTemplatesByName = "fetchRequestTemplatesByName";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector initWithContentsOfURL_ = "initWithContentsOfURL:";
			public static readonly Selector initWithContentsOfURL_forStoreMetadata_ = "initWithContentsOfURL:forStoreMetadata:";
			public static readonly Selector isConfiguration_compatibleWithStoreMetadata_ = "isConfiguration:compatibleWithStoreMetadata:";
			public static readonly Selector isEditable = "isEditable";
			public static readonly Selector localizationDictionary = "localizationDictionary";
			public static readonly Selector mergedModelFromBundles_ = "mergedModelFromBundles:";
			public static readonly Selector mergedModelFromBundles_forStoreMetadata_ = "mergedModelFromBundles:forStoreMetadata:";
			public static readonly Selector modelByMergingModels_ = "modelByMergingModels:";
			public static readonly Selector modelByMergingModels_forStoreMetadata_ = "modelByMergingModels:forStoreMetadata:";
			public static readonly Selector setEntities_ = "setEntities:";
			public static readonly Selector setEntities_forConfiguration_ = "setEntities:forConfiguration:";
			public static readonly Selector setFetchRequestTemplate_forName_ = "setFetchRequestTemplate:forName:";
			public static readonly Selector setLocalizationDictionary_ = "setLocalizationDictionary:";
			public static readonly Selector setVersionIdentifiers_ = "setVersionIdentifiers:";
			public static readonly Selector versionHash = "versionHash";
			public static readonly Selector versionIdentifiers = "versionIdentifiers";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSManagedObjectModelBundle : IEquatable<NSManagedObjectModelBundle> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSManagedObjectModelBundle;
		public static implicit operator NSObject( NSManagedObjectModelBundle value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSManagedObjectModelBundle value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSManagedObjectModelBundle value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSManagedObjectModelBundle?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSManagedObjectModelBundle value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSManagedObjectModelBundle value1, NSManagedObjectModelBundle value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSManagedObjectModelBundle value1, NSManagedObjectModelBundle value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSManagedObjectModelBundle( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSManagedObjectModelBundle alloc() {
			return new NSManagedObjectModelBundle( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject bundle() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.bundle( Handle, CachedSelectors.bundle, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject currentVersion() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentVersion( Handle, CachedSelectors.currentVersion, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject currentVersionURL() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentVersionURL( Handle, CachedSelectors.currentVersionURL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSManagedObjectModelBundle initWithPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithPath_( Handle, CachedSelectors.initWithPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModelBundle( ___result );
		}
		unsafe public NObjective.RuntimeObject modelVersions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.modelVersions( Handle, CachedSelectors.modelVersions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject urlForModelVersionWithName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.urlForModelVersionWithName_( Handle, CachedSelectors.urlForModelVersionWithName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject versionHashInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionHashInfo( Handle, CachedSelectors.versionHashInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject versionInfoDictionary() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionInfoDictionary( Handle, CachedSelectors.versionInfoDictionary, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr bundle( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr currentVersion( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr currentVersionURL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr modelVersions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr urlForModelVersionWithName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionHashInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionInfoDictionary( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector bundle = "bundle";
			public static readonly Selector currentVersion = "currentVersion";
			public static readonly Selector currentVersionURL = "currentVersionURL";
			public static readonly Selector initWithPath_ = "initWithPath:";
			public static readonly Selector modelVersions = "modelVersions";
			public static readonly Selector urlForModelVersionWithName_ = "urlForModelVersionWithName:";
			public static readonly Selector versionHashInfo = "versionHashInfo";
			public static readonly Selector versionInfoDictionary = "versionInfoDictionary";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStore ) )]
	public struct NSMappedObjectStore : IEquatable<NSMappedObjectStore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMappedObjectStore;
		public static implicit operator NSPersistentStore( NSMappedObjectStore value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSMappedObjectStore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMappedObjectStore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMappedObjectStore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMappedObjectStore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMappedObjectStore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMappedObjectStore value1, NSMappedObjectStore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMappedObjectStore value1, NSMappedObjectStore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMappedObjectStore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMappedObjectStore alloc() {
			return new NSMappedObjectStore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject dataForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.dataForKey_( Handle, CachedSelectors.dataForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject executeCountRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeCountRequest_withContext_( Handle, CachedSelectors.executeCountRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject executeFetchRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeFetchRequest_withContext_( Handle, CachedSelectors.executeFetchRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject executeSaveChangesRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeSaveChangesRequest_withContext_( Handle, CachedSelectors.executeSaveChangesRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject getNewIDForObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getNewIDForObject_( Handle, CachedSelectors.getNewIDForObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void save() {
			RuntimeObject ___occuredException;
			NativeMethods.save( Handle, CachedSelectors.save, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void saveDocumentToPath_( NObjective.RuntimeObject path ) {
			RuntimeObject ___occuredException;
			NativeMethods.saveDocumentToPath_( Handle, CachedSelectors.saveDocumentToPath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), path );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr dataForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeCountRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeFetchRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeSaveChangesRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr getNewIDForObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void save( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void saveDocumentToPath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject path );
		}
		static internal class CachedSelectors {
			public static readonly Selector dataForKey_ = "dataForKey:";
			public static readonly Selector executeCountRequest_withContext_ = "executeCountRequest:withContext:";
			public static readonly Selector executeFetchRequest_withContext_ = "executeFetchRequest:withContext:";
			public static readonly Selector executeSaveChangesRequest_withContext_ = "executeSaveChangesRequest:withContext:";
			public static readonly Selector getNewIDForObject_ = "getNewIDForObject:";
			public static readonly Selector save = "save";
			public static readonly Selector saveDocumentToPath_ = "saveDocumentToPath:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSMappingModel : IEquatable<NSMappingModel> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMappingModel;
		public static implicit operator NSObject( NSMappingModel value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMappingModel value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMappingModel value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMappingModel?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMappingModel value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMappingModel value1, NSMappingModel value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMappingModel value1, NSMappingModel value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMappingModel( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMappingModel alloc() {
			return new NSMappingModel( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NSMappingModel mappingModelFromBundles_forSourceModel_destinationModel_( NSArray bundles, NSManagedObjectModel forSourceModel, NSManagedObjectModel destinationModel ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingModelFromBundles_forSourceModel_destinationModel_( ClassHandle, CachedSelectors.mappingModelFromBundles_forSourceModel_destinationModel_, out ___occuredException, sizeof( NSArray ) + sizeof( NSManagedObjectModel ) + sizeof( NSManagedObjectModel ), bundles, forSourceModel, destinationModel );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMappingModel( ___result );
		}
		unsafe public static int migrationDebugLevel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrationDebugLevel( ClassHandle, CachedSelectors.migrationDebugLevel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void setMigrationDebugLevel_( int level ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMigrationDebugLevel_( ClassHandle, CachedSelectors.setMigrationDebugLevel_, out ___occuredException, sizeof( int ), level );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSArray entityMappings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityMappings( Handle, CachedSelectors.entityMappings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSDictionary entityMappingsByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityMappingsByName( Handle, CachedSelectors.entityMappingsByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSMappingModel initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMappingModel( ___result );
		}
		unsafe public NSMappingModel initWithContentsOfURL_( NSURL url ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithContentsOfURL_( Handle, CachedSelectors.initWithContentsOfURL_, out ___occuredException, sizeof( NSURL ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMappingModel( ___result );
		}
		unsafe public bool isEditable() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isEditable( Handle, CachedSelectors.isEditable, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setEntityMappings_( NSArray mappings ) {
			RuntimeObject ___occuredException;
			NativeMethods.setEntityMappings_( Handle, CachedSelectors.setEntityMappings_, out ___occuredException, sizeof( NSArray ), mappings );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityMappings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityMappingsByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithContentsOfURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isEditable( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingModelFromBundles_forSourceModel_destinationModel_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray bundles, NSManagedObjectModel forSourceModel, NSManagedObjectModel destinationModel );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int migrationDebugLevel( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setEntityMappings_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray mappings );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMigrationDebugLevel_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int level );
		}
		static internal class CachedSelectors {
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entityMappings = "entityMappings";
			public static readonly Selector entityMappingsByName = "entityMappingsByName";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector initWithContentsOfURL_ = "initWithContentsOfURL:";
			public static readonly Selector isEditable = "isEditable";
			public static readonly Selector mappingModelFromBundles_forSourceModel_destinationModel_ = "mappingModelFromBundles:forSourceModel:destinationModel:";
			public static readonly Selector migrationDebugLevel = "migrationDebugLevel";
			public static readonly Selector setEntityMappings_ = "setEntityMappings:";
			public static readonly Selector setMigrationDebugLevel_ = "setMigrationDebugLevel:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMappedObjectStore ) )]
	public struct NSMemoryObjectStore : IEquatable<NSMemoryObjectStore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMemoryObjectStore;
		public static implicit operator NSMappedObjectStore( NSMemoryObjectStore value ) {
			return new NSMappedObjectStore( value.Handle );
		}
		public static implicit operator NSPersistentStore( NSMemoryObjectStore value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSMemoryObjectStore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMemoryObjectStore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMemoryObjectStore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMemoryObjectStore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMemoryObjectStore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMemoryObjectStore value1, NSMemoryObjectStore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMemoryObjectStore value1, NSMemoryObjectStore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMemoryObjectStore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMemoryObjectStore alloc() {
			return new NSMemoryObjectStore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSEqualityPredicateOperator ) )]
	public struct NSMemoryStoreEqualityPredicateOperator : IEquatable<NSMemoryStoreEqualityPredicateOperator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMemoryStoreEqualityPredicateOperator;
		public static implicit operator NSEqualityPredicateOperator( NSMemoryStoreEqualityPredicateOperator value ) {
			return new NSEqualityPredicateOperator( value.Handle );
		}
		public static implicit operator NSPredicateOperator( NSMemoryStoreEqualityPredicateOperator value ) {
			return new NSPredicateOperator( value.Handle );
		}
		public static implicit operator NSObject( NSMemoryStoreEqualityPredicateOperator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMemoryStoreEqualityPredicateOperator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMemoryStoreEqualityPredicateOperator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMemoryStoreEqualityPredicateOperator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMemoryStoreEqualityPredicateOperator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMemoryStoreEqualityPredicateOperator value1, NSMemoryStoreEqualityPredicateOperator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMemoryStoreEqualityPredicateOperator value1, NSMemoryStoreEqualityPredicateOperator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMemoryStoreEqualityPredicateOperator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMemoryStoreEqualityPredicateOperator alloc() {
			return new NSMemoryStoreEqualityPredicateOperator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSInPredicateOperator ) )]
	public struct NSMemoryStoreInPredicateOperator : IEquatable<NSMemoryStoreInPredicateOperator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMemoryStoreInPredicateOperator;
		public static implicit operator NSInPredicateOperator( NSMemoryStoreInPredicateOperator value ) {
			return new NSInPredicateOperator( value.Handle );
		}
		public static implicit operator NSPredicateOperator( NSMemoryStoreInPredicateOperator value ) {
			return new NSPredicateOperator( value.Handle );
		}
		public static implicit operator NSObject( NSMemoryStoreInPredicateOperator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMemoryStoreInPredicateOperator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMemoryStoreInPredicateOperator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMemoryStoreInPredicateOperator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMemoryStoreInPredicateOperator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMemoryStoreInPredicateOperator value1, NSMemoryStoreInPredicateOperator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMemoryStoreInPredicateOperator value1, NSMemoryStoreInPredicateOperator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMemoryStoreInPredicateOperator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMemoryStoreInPredicateOperator alloc() {
			return new NSMemoryStoreInPredicateOperator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSValidationErrorLocalizationPolicy ) )]
	public struct NSMergedPolicyLocalizationPolicy : IEquatable<NSMergedPolicyLocalizationPolicy> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMergedPolicyLocalizationPolicy;
		public static implicit operator NSValidationErrorLocalizationPolicy( NSMergedPolicyLocalizationPolicy value ) {
			return new NSValidationErrorLocalizationPolicy( value.Handle );
		}
		public static implicit operator NSObject( NSMergedPolicyLocalizationPolicy value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMergedPolicyLocalizationPolicy value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMergedPolicyLocalizationPolicy value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMergedPolicyLocalizationPolicy?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMergedPolicyLocalizationPolicy value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMergedPolicyLocalizationPolicy value1, NSMergedPolicyLocalizationPolicy value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMergedPolicyLocalizationPolicy value1, NSMergedPolicyLocalizationPolicy value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMergedPolicyLocalizationPolicy( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMergedPolicyLocalizationPolicy alloc() {
			return new NSMergedPolicyLocalizationPolicy( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void addPolicy_( NObjective.RuntimeObject policy ) {
			RuntimeObject ___occuredException;
			NativeMethods.addPolicy_( Handle, CachedSelectors.addPolicy_, out ___occuredException, sizeof( NObjective.RuntimeObject ), policy );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addPolicy_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject policy );
		}
		static internal class CachedSelectors {
			public static readonly Selector addPolicy_ = "addPolicy:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSMergePolicy : IEquatable<NSMergePolicy> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMergePolicy;
		public static implicit operator NSObject( NSMergePolicy value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMergePolicy value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMergePolicy value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMergePolicy?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMergePolicy value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMergePolicy value1, NSMergePolicy value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMergePolicy value1, NSMergePolicy value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMergePolicy( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMergePolicy alloc() {
			return new NSMergePolicy( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void load() {
			RuntimeObject ___occuredException;
			NativeMethods.load( ClassHandle, CachedSelectors.load, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSMergePolicy initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMergePolicy( ___result );
		}
		unsafe public NSMergePolicy initWithTypeCode_( int code ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithTypeCode_( Handle, CachedSelectors.initWithTypeCode_, out ___occuredException, sizeof( int ), code );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMergePolicy( ___result );
		}
		unsafe public char resolveConflict_( NObjective.RuntimeObject conflict ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.resolveConflict_( Handle, CachedSelectors.resolveConflict_, out ___occuredException, sizeof( NObjective.RuntimeObject ), conflict );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char resolveConflicts_( NObjective.RuntimeObject conflicts ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.resolveConflicts_( Handle, CachedSelectors.resolveConflicts_, out ___occuredException, sizeof( NObjective.RuntimeObject ), conflicts );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithTypeCode_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int code );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void load( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char resolveConflict_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject conflict );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char resolveConflicts_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject conflicts );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector initWithTypeCode_ = "initWithTypeCode:";
			public static readonly Selector load = "load";
			public static readonly Selector resolveConflict_ = "resolveConflict:";
			public static readonly Selector resolveConflicts_ = "resolveConflicts:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSMigrationContext : IEquatable<NSMigrationContext> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMigrationContext;
		public static implicit operator NSObject( NSMigrationContext value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMigrationContext value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMigrationContext value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMigrationContext?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMigrationContext value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMigrationContext value1, NSMigrationContext value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMigrationContext value1, NSMigrationContext value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMigrationContext( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMigrationContext alloc() {
			return new NSMigrationContext( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void associateSourceInstance_withDestinationInstance_forEntityMapping_( NObjective.RuntimeObject instance, NObjective.RuntimeObject withDestinationInstance, NObjective.RuntimeObject forEntityMapping ) {
			RuntimeObject ___occuredException;
			NativeMethods.associateSourceInstance_withDestinationInstance_forEntityMapping_( Handle, CachedSelectors.associateSourceInstance_withDestinationInstance_forEntityMapping_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), instance, withDestinationInstance, forEntityMapping );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void clearAssociationTables() {
			RuntimeObject ___occuredException;
			NativeMethods.clearAssociationTables( Handle, CachedSelectors.clearAssociationTables, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject currentEntityMapping() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentEntityMapping( Handle, CachedSelectors.currentEntityMapping, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint currentMigrationStep() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentMigrationStep( Handle, CachedSelectors.currentMigrationStep, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject destinationInstancesForEntityMapping_sourceInstance_( NObjective.RuntimeObject mapping, NObjective.RuntimeObject sourceInstance ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationInstancesForEntityMapping_sourceInstance_( Handle, CachedSelectors.destinationInstancesForEntityMapping_sourceInstance_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), mapping, sourceInstance );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSMigrationContext initWithMigrationManager_( NObjective.RuntimeObject manager ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithMigrationManager_( Handle, CachedSelectors.initWithMigrationManager_, out ___occuredException, sizeof( NObjective.RuntimeObject ), manager );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMigrationContext( ___result );
		}
		unsafe public void setCurrentEntityMapping_( NObjective.RuntimeObject mapping ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCurrentEntityMapping_( Handle, CachedSelectors.setCurrentEntityMapping_, out ___occuredException, sizeof( NObjective.RuntimeObject ), mapping );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setCurrentMigrationStep_( uint step ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCurrentMigrationStep_( Handle, CachedSelectors.setCurrentMigrationStep_, out ___occuredException, sizeof( uint ), step );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sourceInstancesForEntityMapping_destinationInstance_( NObjective.RuntimeObject mapping, NObjective.RuntimeObject destinationInstance ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceInstancesForEntityMapping_destinationInstance_( Handle, CachedSelectors.sourceInstancesForEntityMapping_destinationInstance_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), mapping, destinationInstance );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void associateSourceInstance_withDestinationInstance_forEntityMapping_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject instance, NObjective.RuntimeObject withDestinationInstance, NObjective.RuntimeObject forEntityMapping );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void clearAssociationTables( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr currentEntityMapping( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint currentMigrationStep( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationInstancesForEntityMapping_sourceInstance_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject mapping, NObjective.RuntimeObject sourceInstance );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithMigrationManager_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject manager );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCurrentEntityMapping_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject mapping );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCurrentMigrationStep_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint step );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceInstancesForEntityMapping_destinationInstance_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject mapping, NObjective.RuntimeObject destinationInstance );
		}
		static internal class CachedSelectors {
			public static readonly Selector associateSourceInstance_withDestinationInstance_forEntityMapping_ = "associateSourceInstance:withDestinationInstance:forEntityMapping:";
			public static readonly Selector clearAssociationTables = "clearAssociationTables";
			public static readonly Selector currentEntityMapping = "currentEntityMapping";
			public static readonly Selector currentMigrationStep = "currentMigrationStep";
			public static readonly Selector destinationInstancesForEntityMapping_sourceInstance_ = "destinationInstancesForEntityMapping:sourceInstance:";
			public static readonly Selector initWithMigrationManager_ = "initWithMigrationManager:";
			public static readonly Selector setCurrentEntityMapping_ = "setCurrentEntityMapping:";
			public static readonly Selector setCurrentMigrationStep_ = "setCurrentMigrationStep:";
			public static readonly Selector sourceInstancesForEntityMapping_destinationInstance_ = "sourceInstancesForEntityMapping:destinationInstance:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSMigrationManager : IEquatable<NSMigrationManager> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSMigrationManager;
		public static implicit operator NSObject( NSMigrationManager value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSMigrationManager value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSMigrationManager value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSMigrationManager?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSMigrationManager value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSMigrationManager value1, NSMigrationManager value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSMigrationManager value1, NSMigrationManager value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSMigrationManager( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSMigrationManager alloc() {
			return new NSMigrationManager( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static int migrationDebugLevel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrationDebugLevel( ClassHandle, CachedSelectors.migrationDebugLevel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void setMigrationDebugLevel_( int level ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMigrationDebugLevel_( ClassHandle, CachedSelectors.setMigrationDebugLevel_, out ___occuredException, sizeof( int ), level );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void associateSourceInstance_withDestinationInstance_forEntityMapping_( NSManagedObject instance, NSManagedObject withDestinationInstance, NSEntityMapping forEntityMapping ) {
			RuntimeObject ___occuredException;
			NativeMethods.associateSourceInstance_withDestinationInstance_forEntityMapping_( Handle, CachedSelectors.associateSourceInstance_withDestinationInstance_forEntityMapping_, out ___occuredException, sizeof( NSManagedObject ) + sizeof( NSManagedObject ) + sizeof( NSEntityMapping ), instance, withDestinationInstance, forEntityMapping );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void cancelMigrationWithError_( NSError error ) {
			RuntimeObject ___occuredException;
			NativeMethods.cancelMigrationWithError_( Handle, CachedSelectors.cancelMigrationWithError_, out ___occuredException, sizeof( NSError ), error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSEntityMapping currentEntityMapping() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentEntityMapping( Handle, CachedSelectors.currentEntityMapping, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityMapping( ___result );
		}
		unsafe public NSManagedObjectContext destinationContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationContext( Handle, CachedSelectors.destinationContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectContext( ___result );
		}
		unsafe public NSEntityDescription destinationEntityForEntityMapping_( NSEntityMapping mapping ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntityForEntityMapping_( Handle, CachedSelectors.destinationEntityForEntityMapping_, out ___occuredException, sizeof( NSEntityMapping ), mapping );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public NSArray destinationInstancesForEntityMappingNamed_sourceInstances_( string named, NSArray sourceInstances ) {
			RuntimeObject ___occuredException;
			var ___wrappednamed = Runtime.CreateStringProxy( named );
			var ___result = NativeMethods.destinationInstancesForEntityMappingNamed_sourceInstances_( Handle, CachedSelectors.destinationInstancesForEntityMappingNamed_sourceInstances_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSArray ), ___wrappednamed, sourceInstances );
			Runtime.ReleaseNativeObject( ___wrappednamed );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSManagedObjectModel destinationModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationModel( Handle, CachedSelectors.destinationModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public NObjective.RuntimeObject fetchRequestForSourceEntityNamed_predicateString_( NObjective.RuntimeObject named, NObjective.RuntimeObject predicateString ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchRequestForSourceEntityNamed_predicateString_( Handle, CachedSelectors.fetchRequestForSourceEntityNamed_predicateString_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), named, predicateString );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject fetchRequestForSourceEntityNamed_predicateString_includesSubentities_( NObjective.RuntimeObject named, NObjective.RuntimeObject predicateString, char includesSubentities ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchRequestForSourceEntityNamed_predicateString_includesSubentities_( Handle, CachedSelectors.fetchRequestForSourceEntityNamed_predicateString_includesSubentities_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), named, predicateString, includesSubentities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSMigrationManager initWithSourceModel_destinationModel_( NSManagedObjectModel model, NSManagedObjectModel destinationModel ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSourceModel_destinationModel_( Handle, CachedSelectors.initWithSourceModel_destinationModel_, out ___occuredException, sizeof( NSManagedObjectModel ) + sizeof( NSManagedObjectModel ), model, destinationModel );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMigrationManager( ___result );
		}
		unsafe public NSMappingModel mappingModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingModel( Handle, CachedSelectors.mappingModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSMappingModel( ___result );
		}
		unsafe public bool migrateStoreFromURL_type_options_withMappingModel_toDestinationURL_destinationType_destinationOptions_error_( NSURL url, string type, NSDictionary options, NSMappingModel withMappingModel, NSURL toDestinationURL, string destinationType, NSDictionary destinationOptions, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___wrappedtype = Runtime.CreateStringProxy( type );
			var ___wrappeddestinationType = Runtime.CreateStringProxy( destinationType );
			var ___result = NativeMethods.migrateStoreFromURL_type_options_withMappingModel_toDestinationURL_destinationType_destinationOptions_error_( Handle, CachedSelectors.migrateStoreFromURL_type_options_withMappingModel_toDestinationURL_destinationType_destinationOptions_error_, out ___occuredException, sizeof( NSURL ) + sizeof( IntPtr ) + sizeof( NSDictionary ) + sizeof( NSMappingModel ) + sizeof( NSURL ) + sizeof( IntPtr ) + sizeof( NSDictionary ) + sizeof( IntPtr ), url, ___wrappedtype, options, withMappingModel, toDestinationURL, ___wrappeddestinationType, 
			destinationOptions, ref error );
			Runtime.ReleaseNativeObject( ___wrappedtype );
			Runtime.ReleaseNativeObject( ___wrappeddestinationType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public float migrationProgress() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrationProgress( Handle, CachedSelectors.migrationProgress, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void reset() {
			RuntimeObject ___occuredException;
			NativeMethods.reset( Handle, CachedSelectors.reset, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUserInfo_( NSDictionary info ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUserInfo_( Handle, CachedSelectors.setUserInfo_, out ___occuredException, sizeof( NSDictionary ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSManagedObjectContext sourceContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceContext( Handle, CachedSelectors.sourceContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectContext( ___result );
		}
		unsafe public NSEntityDescription sourceEntityForEntityMapping_( NSEntityMapping mapping ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceEntityForEntityMapping_( Handle, CachedSelectors.sourceEntityForEntityMapping_, out ___occuredException, sizeof( NSEntityMapping ), mapping );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public NSArray sourceInstancesForEntityMappingNamed_destinationInstances_( string named, NSArray destinationInstances ) {
			RuntimeObject ___occuredException;
			var ___wrappednamed = Runtime.CreateStringProxy( named );
			var ___result = NativeMethods.sourceInstancesForEntityMappingNamed_destinationInstances_( Handle, CachedSelectors.sourceInstancesForEntityMappingNamed_destinationInstances_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSArray ), ___wrappednamed, destinationInstances );
			Runtime.ReleaseNativeObject( ___wrappednamed );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSManagedObjectModel sourceModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceModel( Handle, CachedSelectors.sourceModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public NSDictionary userInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.userInfo( Handle, CachedSelectors.userInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void associateSourceInstance_withDestinationInstance_forEntityMapping_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObject instance, NSManagedObject withDestinationInstance, NSEntityMapping forEntityMapping );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void cancelMigrationWithError_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr currentEntityMapping( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntityForEntityMapping_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationInstancesForEntityMappingNamed_sourceInstances_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr named, NSArray sourceInstances );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequestForSourceEntityNamed_predicateString_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named, NObjective.RuntimeObject predicateString );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRequestForSourceEntityNamed_predicateString_includesSubentities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named, NObjective.RuntimeObject predicateString, char includesSubentities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSourceModel_destinationModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectModel model, NSManagedObjectModel destinationModel );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool migrateStoreFromURL_type_options_withMappingModel_toDestinationURL_destinationType_destinationOptions_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url, IntPtr type, NSDictionary options, NSMappingModel withMappingModel, NSURL toDestinationURL, IntPtr destinationType, 
			NSDictionary destinationOptions, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int migrationDebugLevel( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_fpret_eh2" )]
			public static extern float migrationProgress( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void reset( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMigrationDebugLevel_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int level );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUserInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceEntityForEntityMapping_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityMapping mapping );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceInstancesForEntityMappingNamed_destinationInstances_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr named, NSArray destinationInstances );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr userInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector associateSourceInstance_withDestinationInstance_forEntityMapping_ = "associateSourceInstance:withDestinationInstance:forEntityMapping:";
			public static readonly Selector cancelMigrationWithError_ = "cancelMigrationWithError:";
			public static readonly Selector currentEntityMapping = "currentEntityMapping";
			public static readonly Selector destinationContext = "destinationContext";
			public static readonly Selector destinationEntityForEntityMapping_ = "destinationEntityForEntityMapping:";
			public static readonly Selector destinationInstancesForEntityMappingNamed_sourceInstances_ = "destinationInstancesForEntityMappingNamed:sourceInstances:";
			public static readonly Selector destinationModel = "destinationModel";
			public static readonly Selector fetchRequestForSourceEntityNamed_predicateString_ = "fetchRequestForSourceEntityNamed:predicateString:";
			public static readonly Selector fetchRequestForSourceEntityNamed_predicateString_includesSubentities_ = "fetchRequestForSourceEntityNamed:predicateString:includesSubentities:";
			public static readonly Selector initWithSourceModel_destinationModel_ = "initWithSourceModel:destinationModel:";
			public static readonly Selector mappingModel = "mappingModel";
			public static readonly Selector migrateStoreFromURL_type_options_withMappingModel_toDestinationURL_destinationType_destinationOptions_error_ = "migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:";
			public static readonly Selector migrationDebugLevel = "migrationDebugLevel";
			public static readonly Selector migrationProgress = "migrationProgress";
			public static readonly Selector reset = "reset";
			public static readonly Selector setMigrationDebugLevel_ = "setMigrationDebugLevel:";
			public static readonly Selector setUserInfo_ = "setUserInfo:";
			public static readonly Selector sourceContext = "sourceContext";
			public static readonly Selector sourceEntityForEntityMapping_ = "sourceEntityForEntityMapping:";
			public static readonly Selector sourceInstancesForEntityMappingNamed_destinationInstances_ = "sourceInstancesForEntityMappingNamed:destinationInstances:";
			public static readonly Selector sourceModel = "sourceModel";
			public static readonly Selector userInfo = "userInfo";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPersistentStore : IEquatable<NSPersistentStore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPersistentStore;
		public static implicit operator NSObject( NSPersistentStore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPersistentStore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPersistentStore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPersistentStore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPersistentStore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPersistentStore value1, NSPersistentStore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPersistentStore value1, NSPersistentStore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPersistentStore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPersistentStore alloc() {
			return new NSPersistentStore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NSDictionary metadataForPersistentStoreWithURL_error_( NSURL url, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.metadataForPersistentStoreWithURL_error_( ClassHandle, CachedSelectors.metadataForPersistentStoreWithURL_error_, out ___occuredException, sizeof( NSURL ) + sizeof( IntPtr ), url, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public static bool setMetadata_forPersistentStoreWithURL_error_( NSDictionary metadata, NSURL forPersistentStoreWithURL, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.setMetadata_forPersistentStoreWithURL_error_( ClassHandle, CachedSelectors.setMetadata_forPersistentStoreWithURL_error_, out ___occuredException, sizeof( NSDictionary ) + sizeof( NSURL ) + sizeof( IntPtr ), metadata, forPersistentStoreWithURL, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void childContext_didForgetObjectsWithObjectIDs_( NObjective.RuntimeObject context, NObjective.RuntimeObject didForgetObjectsWithObjectIDs ) {
			RuntimeObject ___occuredException;
			NativeMethods.childContext_didForgetObjectsWithObjectIDs_( Handle, CachedSelectors.childContext_didForgetObjectsWithObjectIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, didForgetObjectsWithObjectIDs );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void childContext_didRememberObjectsWithObjectIDs_( NObjective.RuntimeObject context, NObjective.RuntimeObject didRememberObjectsWithObjectIDs ) {
			RuntimeObject ___occuredException;
			NativeMethods.childContext_didRememberObjectsWithObjectIDs_( Handle, CachedSelectors.childContext_didRememberObjectsWithObjectIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, didRememberObjectsWithObjectIDs );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public string configurationName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.configurationName( Handle, CachedSelectors.configurationName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public void didAddToPersistentStoreCoordinator_( NSPersistentStoreCoordinator coordinator ) {
			RuntimeObject ___occuredException;
			NativeMethods.didAddToPersistentStoreCoordinator_( Handle, CachedSelectors.didAddToPersistentStoreCoordinator_, out ___occuredException, sizeof( NSPersistentStoreCoordinator ), coordinator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void doFilesystemCleanupOnRemove_( char @remove ) {
			RuntimeObject ___occuredException;
			NativeMethods.doFilesystemCleanupOnRemove_( Handle, CachedSelectors.doFilesystemCleanupOnRemove_, out ___occuredException, sizeof( char ), @remove );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char doURLStuff_createdStubFile_error_options_( NObjective.RuntimeObject stuff, System.IntPtr createdStubFile, System.IntPtr error, NObjective.RuntimeObject options ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.doURLStuff_createdStubFile_error_options_( Handle, CachedSelectors.doURLStuff_createdStubFile_error_options_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ) + sizeof( System.IntPtr ) + sizeof( NObjective.RuntimeObject ), stuff, createdStubFile, error, options );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject executeRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeRequest_withContext_( Handle, CachedSelectors.executeRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject faultHandler() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.faultHandler( Handle, CachedSelectors.faultHandler, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeClass faultHandlerClass() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.faultHandlerClass( Handle, CachedSelectors.faultHandlerClass, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public string identifier() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.identifier( Handle, CachedSelectors.identifier, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSPersistentStore initWithPersistentStoreCoordinator_configurationName_URL_options_( NSPersistentStoreCoordinator coordinator, string configurationName, NSURL URL, NSDictionary options ) {
			RuntimeObject ___occuredException;
			var ___wrappedconfigurationName = Runtime.CreateStringProxy( configurationName );
			var ___result = NativeMethods.initWithPersistentStoreCoordinator_configurationName_URL_options_( Handle, CachedSelectors.initWithPersistentStoreCoordinator_configurationName_URL_options_, out ___occuredException, sizeof( NSPersistentStoreCoordinator ) + sizeof( IntPtr ) + sizeof( NSURL ) + sizeof( NSDictionary ), coordinator, ___wrappedconfigurationName, URL, options );
			Runtime.ReleaseNativeObject( ___wrappedconfigurationName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStore( ___result );
		}
		unsafe public bool isReadOnly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isReadOnly( Handle, CachedSelectors.isReadOnly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public System.IntPtr knownKeyValuesForObjectID_withContext_( NObjective.RuntimeObject id, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.knownKeyValuesForObjectID_withContext_( Handle, CachedSelectors.knownKeyValuesForObjectID_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char load_( System.IntPtr load ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.load_( Handle, CachedSelectors.load_, out ___occuredException, sizeof( System.IntPtr ), load );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char loadMetadata_( System.IntPtr metadata ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.loadMetadata_( Handle, CachedSelectors.loadMetadata_, out ___occuredException, sizeof( System.IntPtr ), metadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSDictionary metadata() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.metadata( Handle, CachedSelectors.metadata, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NObjective.RuntimeClass objectIDClassForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectIDClassForEntity_( Handle, CachedSelectors.objectIDClassForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject objectIDFactoryForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectIDFactoryForEntity_( Handle, CachedSelectors.objectIDFactoryForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSDictionary options() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.options( Handle, CachedSelectors.options, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSPersistentStoreCoordinator persistentStoreCoordinator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStoreCoordinator( Handle, CachedSelectors.persistentStoreCoordinator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStoreCoordinator( ___result );
		}
		unsafe public NObjective.RuntimeObject retainedDataForObjectID_withContext_( NObjective.RuntimeObject id, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedDataForObjectID_withContext_( Handle, CachedSelectors.retainedDataForObjectID_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject retainedRelationshipDataWithSourceID_forRelationship_withContext_( NObjective.RuntimeObject id, NObjective.RuntimeObject forRelationship, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedRelationshipDataWithSourceID_forRelationship_withContext_( Handle, CachedSelectors.retainedRelationshipDataWithSourceID_forRelationship_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, forRelationship, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setIdentifier_( string identifier ) {
			RuntimeObject ___occuredException;
			var ___wrappedidentifier = Runtime.CreateStringProxy( identifier );
			NativeMethods.setIdentifier_( Handle, CachedSelectors.setIdentifier_, out ___occuredException, sizeof( IntPtr ), ___wrappedidentifier );
			Runtime.ReleaseNativeObject( ___wrappedidentifier );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMetadata_( NSDictionary metadata ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMetadata_( Handle, CachedSelectors.setMetadata_, out ___occuredException, sizeof( NSDictionary ), metadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPersistentStoreCoordinator_( NObjective.RuntimeObject coordinator ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPersistentStoreCoordinator_( Handle, CachedSelectors.setPersistentStoreCoordinator_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coordinator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setReadOnly_( bool only ) {
			RuntimeObject ___occuredException;
			NativeMethods.setReadOnly_( Handle, CachedSelectors.setReadOnly_, out ___occuredException, sizeof( bool ), only );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setURL_( NSURL url ) {
			RuntimeObject ___occuredException;
			NativeMethods.setURL_( Handle, CachedSelectors.setURL_, out ___occuredException, sizeof( NSURL ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public string type() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.type( Handle, CachedSelectors.type, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public NSURL URL() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.URL( Handle, CachedSelectors.URL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSURL( ___result );
		}
		unsafe public void willRemoveFromPersistentStoreCoordinator_( NSPersistentStoreCoordinator coordinator ) {
			RuntimeObject ___occuredException;
			NativeMethods.willRemoveFromPersistentStoreCoordinator_( Handle, CachedSelectors.willRemoveFromPersistentStoreCoordinator_, out ___occuredException, sizeof( NSPersistentStoreCoordinator ), coordinator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void childContext_didForgetObjectsWithObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject didForgetObjectsWithObjectIDs );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void childContext_didRememberObjectsWithObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject didRememberObjectsWithObjectIDs );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr configurationName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didAddToPersistentStoreCoordinator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStoreCoordinator coordinator );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void doFilesystemCleanupOnRemove_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char @remove );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char doURLStuff_createdStubFile_error_options_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject stuff, System.IntPtr createdStubFile, System.IntPtr error, NObjective.RuntimeObject options );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr faultHandler( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass faultHandlerClass( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr identifier( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPersistentStoreCoordinator_configurationName_URL_options_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStoreCoordinator coordinator, IntPtr configurationName, NSURL URL, NSDictionary options );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isReadOnly( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr knownKeyValuesForObjectID_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char load_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr load );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char loadMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr metadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadata( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadataForPersistentStoreWithURL_error_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass objectIDClassForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectIDFactoryForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr options( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStoreCoordinator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedDataForObjectID_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedRelationshipDataWithSourceID_forRelationship_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject forRelationship, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setIdentifier_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr identifier );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary metadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool setMetadata_forPersistentStoreWithURL_error_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary metadata, NSURL forPersistentStoreWithURL, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPersistentStoreCoordinator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coordinator );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setReadOnly_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool only );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr type( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr URL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willRemoveFromPersistentStoreCoordinator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStoreCoordinator coordinator );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector childContext_didForgetObjectsWithObjectIDs_ = "childContext:didForgetObjectsWithObjectIDs:";
			public static readonly Selector childContext_didRememberObjectsWithObjectIDs_ = "childContext:didRememberObjectsWithObjectIDs:";
			public static readonly Selector configurationName = "configurationName";
			public static readonly Selector didAddToPersistentStoreCoordinator_ = "didAddToPersistentStoreCoordinator:";
			public static readonly Selector doFilesystemCleanupOnRemove_ = "doFilesystemCleanupOnRemove:";
			public static readonly Selector doURLStuff_createdStubFile_error_options_ = "doURLStuff:createdStubFile:error:options:";
			public static readonly Selector executeRequest_withContext_ = "executeRequest:withContext:";
			public static readonly Selector faultHandler = "faultHandler";
			public static readonly Selector faultHandlerClass = "faultHandlerClass";
			public static readonly Selector identifier = "identifier";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithPersistentStoreCoordinator_configurationName_URL_options_ = "initWithPersistentStoreCoordinator:configurationName:URL:options:";
			public static readonly Selector isReadOnly = "isReadOnly";
			public static readonly Selector knownKeyValuesForObjectID_withContext_ = "knownKeyValuesForObjectID:withContext:";
			public static readonly Selector load_ = "load:";
			public static readonly Selector loadMetadata_ = "loadMetadata:";
			public static readonly Selector metadata = "metadata";
			public static readonly Selector metadataForPersistentStoreWithURL_error_ = "metadataForPersistentStoreWithURL:error:";
			public static readonly Selector objectIDClassForEntity_ = "objectIDClassForEntity:";
			public static readonly Selector objectIDFactoryForEntity_ = "objectIDFactoryForEntity:";
			public static readonly Selector options = "options";
			public static readonly Selector persistentStoreCoordinator = "persistentStoreCoordinator";
			public static readonly Selector retainedDataForObjectID_withContext_ = "retainedDataForObjectID:withContext:";
			public static readonly Selector retainedRelationshipDataWithSourceID_forRelationship_withContext_ = "retainedRelationshipDataWithSourceID:forRelationship:withContext:";
			public static readonly Selector setIdentifier_ = "setIdentifier:";
			public static readonly Selector setMetadata_ = "setMetadata:";
			public static readonly Selector setMetadata_forPersistentStoreWithURL_error_ = "setMetadata:forPersistentStoreWithURL:error:";
			public static readonly Selector setPersistentStoreCoordinator_ = "setPersistentStoreCoordinator:";
			public static readonly Selector setReadOnly_ = "setReadOnly:";
			public static readonly Selector setURL_ = "setURL:";
			public static readonly Selector type = "type";
			public static readonly Selector URL = "URL";
			public static readonly Selector willRemoveFromPersistentStoreCoordinator_ = "willRemoveFromPersistentStoreCoordinator:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPersistentStoreCache : IEquatable<NSPersistentStoreCache> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPersistentStoreCache;
		public static implicit operator NSObject( NSPersistentStoreCache value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPersistentStoreCache value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPersistentStoreCache value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPersistentStoreCache?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPersistentStoreCache value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPersistentStoreCache value1, NSPersistentStoreCache value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPersistentStoreCache value1, NSPersistentStoreCache value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPersistentStoreCache( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPersistentStoreCache alloc() {
			return new NSPersistentStoreCache( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void decrementRefCountForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			NativeMethods.decrementRefCountForObjectID_( Handle, CachedSelectors.decrementRefCountForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject externalDataForObjectID_timestamp_( NObjective.RuntimeObject id, double timestamp ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalDataForObjectID_timestamp_( Handle, CachedSelectors.externalDataForObjectID_timestamp_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( double ), id, timestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject externalDataForSourceObjectID_key_timestamp_( NObjective.RuntimeObject id, NObjective.RuntimeObject key, double timestamp ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalDataForSourceObjectID_key_timestamp_( Handle, CachedSelectors.externalDataForSourceObjectID_key_timestamp_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( double ), id, key, timestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void forgetAllExternalData() {
			RuntimeObject ___occuredException;
			NativeMethods.forgetAllExternalData( Handle, CachedSelectors.forgetAllExternalData, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void forgetExternalDataForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			NativeMethods.forgetExternalDataForObjectID_( Handle, CachedSelectors.forgetExternalDataForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void incrementRefCountForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			NativeMethods.incrementRefCountForObjectID_( Handle, CachedSelectors.incrementRefCountForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint optionsForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.optionsForObjectID_( Handle, CachedSelectors.optionsForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public int refCountForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.refCountForObjectID_( Handle, CachedSelectors.refCountForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void registerExternalData_forObjectID_options_( NObjective.RuntimeObject data, NObjective.RuntimeObject forObjectID, uint options ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerExternalData_forObjectID_options_( Handle, CachedSelectors.registerExternalData_forObjectID_options_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( uint ), data, forObjectID, options );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void registerExternalData_forSourceObjectID_key_options_andTimestamp_( NObjective.RuntimeObject data, NObjective.RuntimeObject forSourceObjectID, NObjective.RuntimeObject key, uint options, double andTimestamp ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerExternalData_forSourceObjectID_key_options_andTimestamp_( Handle, CachedSelectors.registerExternalData_forSourceObjectID_key_options_andTimestamp_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( uint ) + sizeof( double ), data, forSourceObjectID, key, options, andTimestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool shouldPersistObjectForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.shouldPersistObjectForObjectID_( Handle, CachedSelectors.shouldPersistObjectForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool shouldRefreshObjectForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.shouldRefreshObjectForObjectID_( Handle, CachedSelectors.shouldRefreshObjectForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void decrementRefCountForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr externalDataForObjectID_timestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, double timestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr externalDataForSourceObjectID_key_timestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject key, double timestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void forgetAllExternalData( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void forgetExternalDataForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void incrementRefCountForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint optionsForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int refCountForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerExternalData_forObjectID_options_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject data, NObjective.RuntimeObject forObjectID, uint options );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerExternalData_forSourceObjectID_key_options_andTimestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject data, NObjective.RuntimeObject forSourceObjectID, NObjective.RuntimeObject key, uint options, double andTimestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool shouldPersistObjectForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool shouldRefreshObjectForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
		}
		static internal class CachedSelectors {
			public static readonly Selector decrementRefCountForObjectID_ = "decrementRefCountForObjectID:";
			public static readonly Selector externalDataForObjectID_timestamp_ = "externalDataForObjectID:timestamp:";
			public static readonly Selector externalDataForSourceObjectID_key_timestamp_ = "externalDataForSourceObjectID:key:timestamp:";
			public static readonly Selector forgetAllExternalData = "forgetAllExternalData";
			public static readonly Selector forgetExternalDataForObjectID_ = "forgetExternalDataForObjectID:";
			public static readonly Selector incrementRefCountForObjectID_ = "incrementRefCountForObjectID:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector optionsForObjectID_ = "optionsForObjectID:";
			public static readonly Selector refCountForObjectID_ = "refCountForObjectID:";
			public static readonly Selector registerExternalData_forObjectID_options_ = "registerExternalData:forObjectID:options:";
			public static readonly Selector registerExternalData_forSourceObjectID_key_options_andTimestamp_ = "registerExternalData:forSourceObjectID:key:options:andTimestamp:";
			public static readonly Selector shouldPersistObjectForObjectID_ = "shouldPersistObjectForObjectID:";
			public static readonly Selector shouldRefreshObjectForObjectID_ = "shouldRefreshObjectForObjectID:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPersistentStoreCoordinator : IEquatable<NSPersistentStoreCoordinator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPersistentStoreCoordinator;
		public static implicit operator NSObject( NSPersistentStoreCoordinator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPersistentStoreCoordinator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPersistentStoreCoordinator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPersistentStoreCoordinator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPersistentStoreCoordinator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPersistentStoreCoordinator value1, NSPersistentStoreCoordinator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPersistentStoreCoordinator value1, NSPersistentStoreCoordinator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPersistentStoreCoordinator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPersistentStoreCoordinator alloc() {
			return new NSPersistentStoreCoordinator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static NSDictionary metadataForPersistentStoreOfType_URL_error_( string type, NSURL URL, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___wrappedtype = Runtime.CreateStringProxy( type );
			var ___result = NativeMethods.metadataForPersistentStoreOfType_URL_error_( ClassHandle, CachedSelectors.metadataForPersistentStoreOfType_URL_error_, out ___occuredException, sizeof( IntPtr ) + sizeof( NSURL ) + sizeof( IntPtr ), ___wrappedtype, URL, ref error );
			Runtime.ReleaseNativeObject( ___wrappedtype );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public static NSDictionary metadataForPersistentStoreWithURL_error_( NSURL url, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.metadataForPersistentStoreWithURL_error_( ClassHandle, CachedSelectors.metadataForPersistentStoreWithURL_error_, out ___occuredException, sizeof( NSURL ) + sizeof( IntPtr ), url, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public static NSDictionary registeredStoreTypes() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.registeredStoreTypes( ClassHandle, CachedSelectors.registeredStoreTypes, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public static void registerStoreClass_forStoreType_( NObjective.RuntimeClass @class, string forStoreType ) {
			RuntimeObject ___occuredException;
			var ___wrappedforStoreType = Runtime.CreateStringProxy( forStoreType );
			NativeMethods.registerStoreClass_forStoreType_( ClassHandle, CachedSelectors.registerStoreClass_forStoreType_, out ___occuredException, sizeof( NObjective.RuntimeClass ) + sizeof( IntPtr ), @class, ___wrappedforStoreType );
			Runtime.ReleaseNativeObject( ___wrappedforStoreType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static bool setMetadata_forPersistentStoreOfType_URL_error_( NSDictionary metadata, string forPersistentStoreOfType, NSURL URL, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___wrappedforPersistentStoreOfType = Runtime.CreateStringProxy( forPersistentStoreOfType );
			var ___result = NativeMethods.setMetadata_forPersistentStoreOfType_URL_error_( ClassHandle, CachedSelectors.setMetadata_forPersistentStoreOfType_URL_error_, out ___occuredException, sizeof( NSDictionary ) + sizeof( IntPtr ) + sizeof( NSURL ) + sizeof( IntPtr ), metadata, ___wrappedforPersistentStoreOfType, URL, ref error );
			Runtime.ReleaseNativeObject( ___wrappedforPersistentStoreOfType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSPersistentStore addPersistentStoreWithType_configuration_URL_options_error_( string type, string configuration, NSURL URL, NSDictionary options, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___wrappedtype = Runtime.CreateStringProxy( type );
			var ___wrappedconfiguration = Runtime.CreateStringProxy( configuration );
			var ___result = NativeMethods.addPersistentStoreWithType_configuration_URL_options_error_( Handle, CachedSelectors.addPersistentStoreWithType_configuration_URL_options_error_, out ___occuredException, sizeof( IntPtr ) + sizeof( IntPtr ) + sizeof( NSURL ) + sizeof( NSDictionary ) + sizeof( IntPtr ), ___wrappedtype, ___wrappedconfiguration, URL, options, ref error );
			Runtime.ReleaseNativeObject( ___wrappedtype );
			Runtime.ReleaseNativeObject( ___wrappedconfiguration );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStore( ___result );
		}
		unsafe public void childContext_didForgetObjectsWithObjectIDs_( NObjective.RuntimeObject context, NObjective.RuntimeObject didForgetObjectsWithObjectIDs ) {
			RuntimeObject ___occuredException;
			NativeMethods.childContext_didForgetObjectsWithObjectIDs_( Handle, CachedSelectors.childContext_didForgetObjectsWithObjectIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, didForgetObjectsWithObjectIDs );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void childContext_didRememberObjectsWithObjectIDs_( NObjective.RuntimeObject context, NObjective.RuntimeObject didRememberObjectsWithObjectIDs ) {
			RuntimeObject ___occuredException;
			NativeMethods.childContext_didRememberObjectsWithObjectIDs_( Handle, CachedSelectors.childContext_didRememberObjectsWithObjectIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, didRememberObjectsWithObjectIDs );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject executeRequest_withContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.executeRequest_withContext_( Handle, CachedSelectors.executeRequest_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSPersistentStoreCoordinator initWithManagedObjectModel_( NSManagedObjectModel model ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithManagedObjectModel_( Handle, CachedSelectors.initWithManagedObjectModel_, out ___occuredException, sizeof( NSManagedObjectModel ), model );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStoreCoordinator( ___result );
		}
		unsafe public System.IntPtr knownKeyValuesForObjectID_withContext_( NObjective.RuntimeObject id, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.knownKeyValuesForObjectID_withContext_( Handle, CachedSelectors.knownKeyValuesForObjectID_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void @lock() {
			RuntimeObject ___occuredException;
			NativeMethods.@lock( Handle, CachedSelectors.@lock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSManagedObjectID managedObjectIDForURIRepresentation_( NSURL representation ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectIDForURIRepresentation_( Handle, CachedSelectors.managedObjectIDForURIRepresentation_, out ___occuredException, sizeof( NSURL ), representation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectID( ___result );
		}
		unsafe public NSManagedObjectModel managedObjectModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectModel( Handle, CachedSelectors.managedObjectModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSManagedObjectModel( ___result );
		}
		unsafe public NSDictionary metadataForPersistentStore_( NSPersistentStore store ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.metadataForPersistentStore_( Handle, CachedSelectors.metadataForPersistentStore_, out ___occuredException, sizeof( NSPersistentStore ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSPersistentStore migratePersistentStore_toURL_options_withType_error_( NSPersistentStore store, NSURL toURL, NSDictionary options, string withType, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___wrappedwithType = Runtime.CreateStringProxy( withType );
			var ___result = NativeMethods.migratePersistentStore_toURL_options_withType_error_( Handle, CachedSelectors.migratePersistentStore_toURL_options_withType_error_, out ___occuredException, sizeof( NSPersistentStore ) + sizeof( NSURL ) + sizeof( NSDictionary ) + sizeof( IntPtr ) + sizeof( IntPtr ), store, toURL, options, ___wrappedwithType, ref error );
			Runtime.ReleaseNativeObject( ___wrappedwithType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStore( ___result );
		}
		unsafe public NObjective.RuntimeObject persistentStoreCoordinator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStoreCoordinator( Handle, CachedSelectors.persistentStoreCoordinator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSPersistentStore persistentStoreForURL_( NSURL url ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStoreForURL_( Handle, CachedSelectors.persistentStoreForURL_, out ___occuredException, sizeof( NSURL ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStore( ___result );
		}
		unsafe public NSArray persistentStores() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStores( Handle, CachedSelectors.persistentStores, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public bool removePersistentStore_error_( NSPersistentStore store, ref NSError error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.removePersistentStore_error_( Handle, CachedSelectors.removePersistentStore_error_, out ___occuredException, sizeof( NSPersistentStore ) + sizeof( IntPtr ), store, ref error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject retainedDataForObjectID_withContext_( NObjective.RuntimeObject id, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedDataForObjectID_withContext_( Handle, CachedSelectors.retainedDataForObjectID_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject retainedRelationshipDataWithSourceID_forRelationship_withContext_( NObjective.RuntimeObject id, NObjective.RuntimeObject forRelationship, NObjective.RuntimeObject withContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedRelationshipDataWithSourceID_forRelationship_withContext_( Handle, CachedSelectors.retainedRelationshipDataWithSourceID_forRelationship_withContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, forRelationship, withContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setMetadata_forPersistentStore_( NSDictionary metadata, NSPersistentStore forPersistentStore ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMetadata_forPersistentStore_( Handle, CachedSelectors.setMetadata_forPersistentStore_, out ___occuredException, sizeof( NSDictionary ) + sizeof( NSPersistentStore ), metadata, forPersistentStore );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool setURL_forPersistentStore_( NSURL url, NSPersistentStore forPersistentStore ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.setURL_forPersistentStore_( Handle, CachedSelectors.setURL_forPersistentStore_, out ___occuredException, sizeof( NSURL ) + sizeof( NSPersistentStore ), url, forPersistentStore );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool tryLock() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.tryLock( Handle, CachedSelectors.tryLock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void unlock() {
			RuntimeObject ___occuredException;
			NativeMethods.unlock( Handle, CachedSelectors.unlock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSURL URLForPersistentStore_( NSPersistentStore store ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.URLForPersistentStore_( Handle, CachedSelectors.URLForPersistentStore_, out ___occuredException, sizeof( NSPersistentStore ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSURL( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr addPersistentStoreWithType_configuration_URL_options_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr type, IntPtr configuration, NSURL URL, NSDictionary options, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void childContext_didForgetObjectsWithObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject didForgetObjectsWithObjectIDs );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void childContext_didRememberObjectsWithObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject didRememberObjectsWithObjectIDs );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr executeRequest_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithManagedObjectModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSManagedObjectModel model );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr knownKeyValuesForObjectID_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void @lock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectIDForURIRepresentation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL representation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadataForPersistentStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStore store );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadataForPersistentStoreOfType_URL_error_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr type, NSURL URL, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadataForPersistentStoreWithURL_error_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr migratePersistentStore_toURL_options_withType_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStore store, NSURL toURL, NSDictionary options, IntPtr withType, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStoreCoordinator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStoreForURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStores( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr registeredStoreTypes( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerStoreClass_forStoreType_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeClass @class, IntPtr forStoreType );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool removePersistentStore_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStore store, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedDataForObjectID_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedRelationshipDataWithSourceID_forRelationship_withContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject forRelationship, NObjective.RuntimeObject withContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMetadata_forPersistentStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary metadata, NSPersistentStore forPersistentStore );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool setMetadata_forPersistentStoreOfType_URL_error_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary metadata, IntPtr forPersistentStoreOfType, NSURL URL, ref NSError error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool setURL_forPersistentStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSURL url, NSPersistentStore forPersistentStore );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool tryLock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void unlock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr URLForPersistentStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSPersistentStore store );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector addPersistentStoreWithType_configuration_URL_options_error_ = "addPersistentStoreWithType:configuration:URL:options:error:";
			public static readonly Selector childContext_didForgetObjectsWithObjectIDs_ = "childContext:didForgetObjectsWithObjectIDs:";
			public static readonly Selector childContext_didRememberObjectsWithObjectIDs_ = "childContext:didRememberObjectsWithObjectIDs:";
			public static readonly Selector executeRequest_withContext_ = "executeRequest:withContext:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithManagedObjectModel_ = "initWithManagedObjectModel:";
			public static readonly Selector knownKeyValuesForObjectID_withContext_ = "knownKeyValuesForObjectID:withContext:";
			public static readonly Selector @lock = "lock";
			public static readonly Selector managedObjectIDForURIRepresentation_ = "managedObjectIDForURIRepresentation:";
			public static readonly Selector managedObjectModel = "managedObjectModel";
			public static readonly Selector metadataForPersistentStore_ = "metadataForPersistentStore:";
			public static readonly Selector metadataForPersistentStoreOfType_URL_error_ = "metadataForPersistentStoreOfType:URL:error:";
			public static readonly Selector metadataForPersistentStoreWithURL_error_ = "metadataForPersistentStoreWithURL:error:";
			public static readonly Selector migratePersistentStore_toURL_options_withType_error_ = "migratePersistentStore:toURL:options:withType:error:";
			public static readonly Selector persistentStoreCoordinator = "persistentStoreCoordinator";
			public static readonly Selector persistentStoreForURL_ = "persistentStoreForURL:";
			public static readonly Selector persistentStores = "persistentStores";
			public static readonly Selector registeredStoreTypes = "registeredStoreTypes";
			public static readonly Selector registerStoreClass_forStoreType_ = "registerStoreClass:forStoreType:";
			public static readonly Selector removePersistentStore_error_ = "removePersistentStore:error:";
			public static readonly Selector retainedDataForObjectID_withContext_ = "retainedDataForObjectID:withContext:";
			public static readonly Selector retainedRelationshipDataWithSourceID_forRelationship_withContext_ = "retainedRelationshipDataWithSourceID:forRelationship:withContext:";
			public static readonly Selector setMetadata_forPersistentStore_ = "setMetadata:forPersistentStore:";
			public static readonly Selector setMetadata_forPersistentStoreOfType_URL_error_ = "setMetadata:forPersistentStoreOfType:URL:error:";
			public static readonly Selector setURL_forPersistentStore_ = "setURL:forPersistentStore:";
			public static readonly Selector tryLock = "tryLock";
			public static readonly Selector unlock = "unlock";
			public static readonly Selector URLForPersistentStore_ = "URLForPersistentStore:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPersistentStoreMap : IEquatable<NSPersistentStoreMap> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPersistentStoreMap;
		public static implicit operator NSObject( NSPersistentStoreMap value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPersistentStoreMap value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPersistentStoreMap value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPersistentStoreMap?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPersistentStoreMap value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPersistentStoreMap value1, NSPersistentStoreMap value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPersistentStoreMap value1, NSPersistentStoreMap value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPersistentStoreMap( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPersistentStoreMap alloc() {
			return new NSPersistentStoreMap( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void addObject_objectIDMap_( NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap ) {
			RuntimeObject ___occuredException;
			NativeMethods.addObject_objectIDMap_( Handle, CachedSelectors.addObject_objectIDMap_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, objectIDMap );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject configurationName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.configurationName( Handle, CachedSelectors.configurationName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject databaseUUID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseUUID( Handle, CachedSelectors.databaseUUID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject dataForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.dataForKey_( Handle, CachedSelectors.dataForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject handleFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.handleFetchRequest_( Handle, CachedSelectors.handleFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSPersistentStoreMap initWithStore_( NObjective.RuntimeObject store ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithStore_( Handle, CachedSelectors.initWithStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStoreMap( ___result );
		}
		unsafe public NObjective.RuntimeObject metadata() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.metadata( Handle, CachedSelectors.metadata, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public ulong nextPK64() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.nextPK64( Handle, CachedSelectors.nextPK64, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void removeObject_objectIDMap_( NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap ) {
			RuntimeObject ___occuredException;
			NativeMethods.removeObject_objectIDMap_( Handle, CachedSelectors.removeObject_objectIDMap_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, objectIDMap );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject retainedObjectIDsForRelationship_forObjectID_( NObjective.RuntimeObject relationship, NObjective.RuntimeObject forObjectID ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedObjectIDsForRelationship_forObjectID_( Handle, CachedSelectors.retainedObjectIDsForRelationship_forObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), relationship, forObjectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDatabaseUUID_( NObjective.RuntimeObject uuid ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDatabaseUUID_( Handle, CachedSelectors.setDatabaseUUID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), uuid );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMetadata_( NObjective.RuntimeObject metadata ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMetadata_( Handle, CachedSelectors.setMetadata_, out ___occuredException, sizeof( NObjective.RuntimeObject ), metadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject store() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.store( Handle, CachedSelectors.store, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void updateObject_objectIDMap_( NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap ) {
			RuntimeObject ___occuredException;
			NativeMethods.updateObject_objectIDMap_( Handle, CachedSelectors.updateObject_objectIDMap_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, objectIDMap );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addObject_objectIDMap_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr configurationName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr databaseUUID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr dataForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr handleFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadata( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern ulong nextPK64( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void removeObject_objectIDMap_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedObjectIDsForRelationship_forObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship, NObjective.RuntimeObject forObjectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDatabaseUUID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject uuid );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject metadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr store( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void updateObject_objectIDMap_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap );
		}
		static internal class CachedSelectors {
			public static readonly Selector addObject_objectIDMap_ = "addObject:objectIDMap:";
			public static readonly Selector configurationName = "configurationName";
			public static readonly Selector databaseUUID = "databaseUUID";
			public static readonly Selector dataForKey_ = "dataForKey:";
			public static readonly Selector handleFetchRequest_ = "handleFetchRequest:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithStore_ = "initWithStore:";
			public static readonly Selector metadata = "metadata";
			public static readonly Selector nextPK64 = "nextPK64";
			public static readonly Selector removeObject_objectIDMap_ = "removeObject:objectIDMap:";
			public static readonly Selector retainedObjectIDsForRelationship_forObjectID_ = "retainedObjectIDsForRelationship:forObjectID:";
			public static readonly Selector setDatabaseUUID_ = "setDatabaseUUID:";
			public static readonly Selector setMetadata_ = "setMetadata:";
			public static readonly Selector store = "store";
			public static readonly Selector updateObject_objectIDMap_ = "updateObject:objectIDMap:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPersistentStoreRequest : IEquatable<NSPersistentStoreRequest> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPersistentStoreRequest;
		public static implicit operator NSObject( NSPersistentStoreRequest value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPersistentStoreRequest value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPersistentStoreRequest value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPersistentStoreRequest?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPersistentStoreRequest value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPersistentStoreRequest value1, NSPersistentStoreRequest value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPersistentStoreRequest value1, NSPersistentStoreRequest value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPersistentStoreRequest( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPersistentStoreRequest alloc() {
			return new NSPersistentStoreRequest( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char accessInstanceVariablesDirectly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.accessInstanceVariablesDirectly( ClassHandle, CachedSelectors.accessInstanceVariablesDirectly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char hasChanges() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasChanges( Handle, CachedSelectors.hasChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSPersistentStoreRequest initForManagedObjectContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForManagedObjectContext_( Handle, CachedSelectors.initForManagedObjectContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPersistentStoreRequest( ___result );
		}
		unsafe public NObjective.RuntimeObject managedObjectContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectContext( Handle, CachedSelectors.managedObjectContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject requestError() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.requestError( Handle, CachedSelectors.requestError, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char requestSuccessful() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.requestSuccessful( Handle, CachedSelectors.requestSuccessful, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint requestType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.requestType( Handle, CachedSelectors.requestType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public void setManagedObjectContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.setManagedObjectContext_( Handle, CachedSelectors.setManagedObjectContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRequestError_( NObjective.RuntimeObject error ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRequestError_( Handle, CachedSelectors.setRequestError_, out ___occuredException, sizeof( NObjective.RuntimeObject ), error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRequestSuccessful_( char successful ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRequestSuccessful_( Handle, CachedSelectors.setRequestSuccessful_, out ___occuredException, sizeof( char ), successful );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setStores_( NObjective.RuntimeObject stores ) {
			RuntimeObject ___occuredException;
			NativeMethods.setStores_( Handle, CachedSelectors.setStores_, out ___occuredException, sizeof( NObjective.RuntimeObject ), stores );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject stores() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.stores( Handle, CachedSelectors.stores, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char accessInstanceVariablesDirectly( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForManagedObjectContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr requestError( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char requestSuccessful( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint requestType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setManagedObjectContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRequestError_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRequestSuccessful_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char successful );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setStores_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject stores );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr stores( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector accessInstanceVariablesDirectly = "accessInstanceVariablesDirectly";
			public static readonly Selector hasChanges = "hasChanges";
			public static readonly Selector initForManagedObjectContext_ = "initForManagedObjectContext:";
			public static readonly Selector managedObjectContext = "managedObjectContext";
			public static readonly Selector requestError = "requestError";
			public static readonly Selector requestSuccessful = "requestSuccessful";
			public static readonly Selector requestType = "requestType";
			public static readonly Selector setManagedObjectContext_ = "setManagedObjectContext:";
			public static readonly Selector setRequestError_ = "setRequestError:";
			public static readonly Selector setRequestSuccessful_ = "setRequestSuccessful:";
			public static readonly Selector setStores_ = "setStores:";
			public static readonly Selector stores = "stores";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPrivateCoreDataClassForFindingBundle : IEquatable<NSPrivateCoreDataClassForFindingBundle> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPrivateCoreDataClassForFindingBundle;
		public static implicit operator NSObject( NSPrivateCoreDataClassForFindingBundle value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPrivateCoreDataClassForFindingBundle value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPrivateCoreDataClassForFindingBundle value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPrivateCoreDataClassForFindingBundle?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPrivateCoreDataClassForFindingBundle value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPrivateCoreDataClassForFindingBundle value1, NSPrivateCoreDataClassForFindingBundle value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPrivateCoreDataClassForFindingBundle value1, NSPrivateCoreDataClassForFindingBundle value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPrivateCoreDataClassForFindingBundle( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPrivateCoreDataClassForFindingBundle alloc() {
			return new NSPrivateCoreDataClassForFindingBundle( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPropertyDescription : IEquatable<NSPropertyDescription> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPropertyDescription;
		public static implicit operator NSObject( NSPropertyDescription value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPropertyDescription value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPropertyDescription value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPropertyDescription?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPropertyDescription value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPropertyDescription value1, NSPropertyDescription value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPropertyDescription value1, NSPropertyDescription value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPropertyDescription( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPropertyDescription alloc() {
			return new NSPropertyDescription( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSEntityDescription entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public NSPropertyDescription initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPropertyDescription( ___result );
		}
		unsafe public bool isIndexed() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isIndexed( Handle, CachedSelectors.isIndexed, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isOptional() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isOptional( Handle, CachedSelectors.isOptional, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isReadOnly() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isReadOnly( Handle, CachedSelectors.isReadOnly, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isTransient() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isTransient( Handle, CachedSelectors.isTransient, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public string name() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.name( Handle, CachedSelectors.name, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public void setIndexed_( bool indexed ) {
			RuntimeObject ___occuredException;
			NativeMethods.setIndexed_( Handle, CachedSelectors.setIndexed_, out ___occuredException, sizeof( bool ), indexed );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setName_( Handle, CachedSelectors.setName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setOptional_( bool optional ) {
			RuntimeObject ___occuredException;
			NativeMethods.setOptional_( Handle, CachedSelectors.setOptional_, out ___occuredException, sizeof( bool ), optional );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setReadOnly_( char only ) {
			RuntimeObject ___occuredException;
			NativeMethods.setReadOnly_( Handle, CachedSelectors.setReadOnly_, out ___occuredException, sizeof( char ), only );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setTransient_( bool transient ) {
			RuntimeObject ___occuredException;
			NativeMethods.setTransient_( Handle, CachedSelectors.setTransient_, out ___occuredException, sizeof( bool ), transient );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUserInfo_( NSDictionary info ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUserInfo_( Handle, CachedSelectors.setUserInfo_, out ___occuredException, sizeof( NSDictionary ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValidationPredicates_withValidationWarnings_( NSArray predicates, NSArray withValidationWarnings ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValidationPredicates_withValidationWarnings_( Handle, CachedSelectors.setValidationPredicates_withValidationWarnings_, out ___occuredException, sizeof( NSArray ) + sizeof( NSArray ), predicates, withValidationWarnings );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setVersionHashModifier_( string modifier ) {
			RuntimeObject ___occuredException;
			var ___wrappedmodifier = Runtime.CreateStringProxy( modifier );
			NativeMethods.setVersionHashModifier_( Handle, CachedSelectors.setVersionHashModifier_, out ___occuredException, sizeof( IntPtr ), ___wrappedmodifier );
			Runtime.ReleaseNativeObject( ___wrappedmodifier );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSDictionary userInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.userInfo( Handle, CachedSelectors.userInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSArray validationPredicates() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.validationPredicates( Handle, CachedSelectors.validationPredicates, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSArray validationWarnings() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.validationWarnings( Handle, CachedSelectors.validationWarnings, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSArray( ___result );
		}
		unsafe public NSData versionHash() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionHash( Handle, CachedSelectors.versionHash, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSData( ___result );
		}
		unsafe public string versionHashModifier() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.versionHashModifier( Handle, CachedSelectors.versionHashModifier, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isIndexed( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isOptional( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isReadOnly( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isTransient( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr name( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setIndexed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool indexed );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setOptional_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool optional );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setReadOnly_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char only );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setTransient_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, bool transient );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUserInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValidationPredicates_withValidationWarnings_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSArray predicates, NSArray withValidationWarnings );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setVersionHashModifier_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr modifier );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr userInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr validationPredicates( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr validationWarnings( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionHash( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr versionHashModifier( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entity = "entity";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector isIndexed = "isIndexed";
			public static readonly Selector isOptional = "isOptional";
			public static readonly Selector isReadOnly = "isReadOnly";
			public static readonly Selector isTransient = "isTransient";
			public static readonly Selector name = "name";
			public static readonly Selector setIndexed_ = "setIndexed:";
			public static readonly Selector setName_ = "setName:";
			public static readonly Selector setOptional_ = "setOptional:";
			public static readonly Selector setReadOnly_ = "setReadOnly:";
			public static readonly Selector setTransient_ = "setTransient:";
			public static readonly Selector setUserInfo_ = "setUserInfo:";
			public static readonly Selector setValidationPredicates_withValidationWarnings_ = "setValidationPredicates:withValidationWarnings:";
			public static readonly Selector setVersionHashModifier_ = "setVersionHashModifier:";
			public static readonly Selector userInfo = "userInfo";
			public static readonly Selector validationPredicates = "validationPredicates";
			public static readonly Selector validationWarnings = "validationWarnings";
			public static readonly Selector versionHash = "versionHash";
			public static readonly Selector versionHashModifier = "versionHashModifier";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSPropertyMapping : IEquatable<NSPropertyMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPropertyMapping;
		public static implicit operator NSObject( NSPropertyMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPropertyMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPropertyMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPropertyMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPropertyMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPropertyMapping value1, NSPropertyMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPropertyMapping value1, NSPropertyMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPropertyMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPropertyMapping alloc() {
			return new NSPropertyMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSPropertyMapping initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPropertyMapping( ___result );
		}
		unsafe public NSPropertyMapping initWithName_valueExpression_( NObjective.RuntimeObject name, NObjective.RuntimeObject valueExpression ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithName_valueExpression_( Handle, CachedSelectors.initWithName_valueExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, valueExpression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPropertyMapping( ___result );
		}
		unsafe public bool isEditable() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isEditable( Handle, CachedSelectors.isEditable, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public string name() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.name( Handle, CachedSelectors.name, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return Runtime.UnwrapNSString( ___result );
		}
		unsafe public void setName_( string name ) {
			RuntimeObject ___occuredException;
			var ___wrappedname = Runtime.CreateStringProxy( name );
			NativeMethods.setName_( Handle, CachedSelectors.setName_, out ___occuredException, sizeof( IntPtr ), ___wrappedname );
			Runtime.ReleaseNativeObject( ___wrappedname );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUserInfo_( NSDictionary info ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUserInfo_( Handle, CachedSelectors.setUserInfo_, out ___occuredException, sizeof( NSDictionary ), info );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValueExpression_( NSExpression expression ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValueExpression_( Handle, CachedSelectors.setValueExpression_, out ___occuredException, sizeof( NSExpression ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSDictionary userInfo() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.userInfo( Handle, CachedSelectors.userInfo, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSDictionary( ___result );
		}
		unsafe public NSExpression valueExpression() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueExpression( Handle, CachedSelectors.valueExpression, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSExpression( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithName_valueExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, NObjective.RuntimeObject valueExpression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isEditable( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr name( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, IntPtr name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUserInfo_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDictionary info );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValueExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSExpression expression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr userInfo( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueExpression( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector initWithName_valueExpression_ = "initWithName:valueExpression:";
			public static readonly Selector isEditable = "isEditable";
			public static readonly Selector name = "name";
			public static readonly Selector setName_ = "setName:";
			public static readonly Selector setUserInfo_ = "setUserInfo:";
			public static readonly Selector setValueExpression_ = "setValueExpression:";
			public static readonly Selector userInfo = "userInfo";
			public static readonly Selector valueExpression = "valueExpression";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapping ) )]
	public struct NSPropertyStoreMapping : IEquatable<NSPropertyStoreMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSPropertyStoreMapping;
		public static implicit operator NSStoreMapping( NSPropertyStoreMapping value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSPropertyStoreMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSPropertyStoreMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSPropertyStoreMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSPropertyStoreMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSPropertyStoreMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSPropertyStoreMapping value1, NSPropertyStoreMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSPropertyStoreMapping value1, NSPropertyStoreMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSPropertyStoreMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSPropertyStoreMapping alloc() {
			return new NSPropertyStoreMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSPropertyStoreMapping initWithProperty_( NObjective.RuntimeObject property ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithProperty_( Handle, CachedSelectors.initWithProperty_, out ___occuredException, sizeof( NObjective.RuntimeObject ), property );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSPropertyStoreMapping( ___result );
		}
		unsafe public NObjective.RuntimeObject property() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.property( Handle, CachedSelectors.property, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setProperty_( NObjective.RuntimeObject property ) {
			RuntimeObject ___occuredException;
			NativeMethods.setProperty_( Handle, CachedSelectors.setProperty_, out ___occuredException, sizeof( NObjective.RuntimeObject ), property );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithProperty_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject property );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr property( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setProperty_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject property );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithProperty_ = "initWithProperty:";
			public static readonly Selector property = "property";
			public static readonly Selector setProperty_ = "setProperty:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStoreRequest ) )]
	public struct NSRefreshRequest : IEquatable<NSRefreshRequest> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSRefreshRequest;
		public static implicit operator NSPersistentStoreRequest( NSRefreshRequest value ) {
			return new NSPersistentStoreRequest( value.Handle );
		}
		public static implicit operator NSObject( NSRefreshRequest value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSRefreshRequest value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSRefreshRequest value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSRefreshRequest?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSRefreshRequest value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSRefreshRequest value1, NSRefreshRequest value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSRefreshRequest value1, NSRefreshRequest value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSRefreshRequest( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSRefreshRequest alloc() {
			return new NSRefreshRequest( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject refreshObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.refreshObjects( Handle, CachedSelectors.refreshObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint refreshType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.refreshType( Handle, CachedSelectors.refreshType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public void setRefreshObjects_( NObjective.RuntimeObject objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRefreshObjects_( Handle, CachedSelectors.setRefreshObjects_, out ___occuredException, sizeof( NObjective.RuntimeObject ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRefreshType_( uint type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRefreshType_( Handle, CachedSelectors.setRefreshType_, out ___occuredException, sizeof( uint ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr refreshObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint refreshType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRefreshObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRefreshType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint type );
		}
		static internal class CachedSelectors {
			public static readonly Selector refreshObjects = "refreshObjects";
			public static readonly Selector refreshType = "refreshType";
			public static readonly Selector setRefreshObjects_ = "setRefreshObjects:";
			public static readonly Selector setRefreshType_ = "setRefreshType:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPropertyDescription ) )]
	public struct NSRelationshipDescription : IEquatable<NSRelationshipDescription> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSRelationshipDescription;
		public static implicit operator NSPropertyDescription( NSRelationshipDescription value ) {
			return new NSPropertyDescription( value.Handle );
		}
		public static implicit operator NSObject( NSRelationshipDescription value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSRelationshipDescription value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSRelationshipDescription value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSRelationshipDescription?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSRelationshipDescription value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSRelationshipDescription value1, NSRelationshipDescription value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSRelationshipDescription value1, NSRelationshipDescription value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSRelationshipDescription( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSRelationshipDescription alloc() {
			return new NSRelationshipDescription( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSDeleteRule deleteRule() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.deleteRule( Handle, CachedSelectors.deleteRule, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( NSDeleteRule ) ___result;
		}
		unsafe public NSEntityDescription destinationEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntity( Handle, CachedSelectors.destinationEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSEntityDescription( ___result );
		}
		unsafe public NSRelationshipDescription inverseRelationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.inverseRelationship( Handle, CachedSelectors.inverseRelationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSRelationshipDescription( ___result );
		}
		unsafe public bool isToMany() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isToMany( Handle, CachedSelectors.isToMany, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint maxCount() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.maxCount( Handle, CachedSelectors.maxCount, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint minCount() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minCount( Handle, CachedSelectors.minCount, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public void setDeleteRule_( NSDeleteRule rule ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDeleteRule_( Handle, CachedSelectors.setDeleteRule_, out ___occuredException, sizeof( NSDeleteRule ), rule );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDestinationEntity_( NSEntityDescription entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationEntity_( Handle, CachedSelectors.setDestinationEntity_, out ___occuredException, sizeof( NSEntityDescription ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setInverseRelationship_( NSRelationshipDescription relationship ) {
			RuntimeObject ___occuredException;
			NativeMethods.setInverseRelationship_( Handle, CachedSelectors.setInverseRelationship_, out ___occuredException, sizeof( NSRelationshipDescription ), relationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMaxCount_( uint count ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMaxCount_( Handle, CachedSelectors.setMaxCount_, out ___occuredException, sizeof( uint ), count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMinCount_( uint count ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMinCount_( Handle, CachedSelectors.setMinCount_, out ___occuredException, sizeof( uint ), count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint deleteRule( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr inverseRelationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isToMany( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint maxCount( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint minCount( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDeleteRule_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSDeleteRule rule );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSEntityDescription entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setInverseRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSRelationshipDescription relationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMaxCount_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMinCount_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint count );
		}
		static internal class CachedSelectors {
			public static readonly Selector deleteRule = "deleteRule";
			public static readonly Selector destinationEntity = "destinationEntity";
			public static readonly Selector inverseRelationship = "inverseRelationship";
			public static readonly Selector isToMany = "isToMany";
			public static readonly Selector maxCount = "maxCount";
			public static readonly Selector minCount = "minCount";
			public static readonly Selector setDeleteRule_ = "setDeleteRule:";
			public static readonly Selector setDestinationEntity_ = "setDestinationEntity:";
			public static readonly Selector setInverseRelationship_ = "setInverseRelationship:";
			public static readonly Selector setMaxCount_ = "setMaxCount:";
			public static readonly Selector setMinCount_ = "setMinCount:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPropertyStoreMapping ) )]
	public struct NSRelationshipStoreMapping : IEquatable<NSRelationshipStoreMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSRelationshipStoreMapping;
		public static implicit operator NSPropertyStoreMapping( NSRelationshipStoreMapping value ) {
			return new NSPropertyStoreMapping( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSRelationshipStoreMapping value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSRelationshipStoreMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSRelationshipStoreMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSRelationshipStoreMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSRelationshipStoreMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSRelationshipStoreMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSRelationshipStoreMapping value1, NSRelationshipStoreMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSRelationshipStoreMapping value1, NSRelationshipStoreMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSRelationshipStoreMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSRelationshipStoreMapping alloc() {
			return new NSRelationshipStoreMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject columnDefinitions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.columnDefinitions( Handle, CachedSelectors.columnDefinitions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject constraintDefinitions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.constraintDefinitions( Handle, CachedSelectors.constraintDefinitions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationEntityExternalName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntityExternalName( Handle, CachedSelectors.destinationEntityExternalName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject foreignKeys() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKeys( Handle, CachedSelectors.foreignKeys, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject joins() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.joins( Handle, CachedSelectors.joins, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint joinSemantic() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.joinSemantic( Handle, CachedSelectors.joinSemantic, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject relationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationship( Handle, CachedSelectors.relationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDestinationEntityExternalName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationEntityExternalName_( Handle, CachedSelectors.setDestinationEntityExternalName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setForeignKeys_( NObjective.RuntimeObject keys ) {
			RuntimeObject ___occuredException;
			NativeMethods.setForeignKeys_( Handle, CachedSelectors.setForeignKeys_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keys );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setJoins_( NObjective.RuntimeObject joins ) {
			RuntimeObject ___occuredException;
			NativeMethods.setJoins_( Handle, CachedSelectors.setJoins_, out ___occuredException, sizeof( NObjective.RuntimeObject ), joins );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setJoinSemantic_( uint semantic ) {
			RuntimeObject ___occuredException;
			NativeMethods.setJoinSemantic_( Handle, CachedSelectors.setJoinSemantic_, out ___occuredException, sizeof( uint ), semantic );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr columnDefinitions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr constraintDefinitions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntityExternalName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignKeys( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr joins( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint joinSemantic( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationEntityExternalName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setForeignKeys_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keys );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setJoins_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject joins );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setJoinSemantic_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint semantic );
		}
		static internal class CachedSelectors {
			public static readonly Selector columnDefinitions = "columnDefinitions";
			public static readonly Selector constraintDefinitions = "constraintDefinitions";
			public static readonly Selector destinationEntityExternalName = "destinationEntityExternalName";
			public static readonly Selector foreignKeys = "foreignKeys";
			public static readonly Selector joins = "joins";
			public static readonly Selector joinSemantic = "joinSemantic";
			public static readonly Selector relationship = "relationship";
			public static readonly Selector setDestinationEntityExternalName_ = "setDestinationEntityExternalName:";
			public static readonly Selector setForeignKeys_ = "setForeignKeys:";
			public static readonly Selector setJoins_ = "setJoins:";
			public static readonly Selector setJoinSemantic_ = "setJoinSemantic:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStoreRequest ) )]
	public struct NSSaveChangesRequest : IEquatable<NSSaveChangesRequest> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSaveChangesRequest;
		public static implicit operator NSPersistentStoreRequest( NSSaveChangesRequest value ) {
			return new NSPersistentStoreRequest( value.Handle );
		}
		public static implicit operator NSObject( NSSaveChangesRequest value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSaveChangesRequest value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSaveChangesRequest value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSaveChangesRequest?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSaveChangesRequest value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSaveChangesRequest value1, NSSaveChangesRequest value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSaveChangesRequest value1, NSSaveChangesRequest value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSaveChangesRequest( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSaveChangesRequest alloc() {
			return new NSSaveChangesRequest( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject deletedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.deletedObjects( Handle, CachedSelectors.deletedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject insertedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.insertedObjects( Handle, CachedSelectors.insertedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject lockedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.lockedObjects( Handle, CachedSelectors.lockedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDeletedObjects_( NObjective.RuntimeObject objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDeletedObjects_( Handle, CachedSelectors.setDeletedObjects_, out ___occuredException, sizeof( NObjective.RuntimeObject ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setInsertedObjects_( NObjective.RuntimeObject objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setInsertedObjects_( Handle, CachedSelectors.setInsertedObjects_, out ___occuredException, sizeof( NObjective.RuntimeObject ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setLockedObjects_( NObjective.RuntimeObject objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setLockedObjects_( Handle, CachedSelectors.setLockedObjects_, out ___occuredException, sizeof( NObjective.RuntimeObject ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUpdatedObjects_( NObjective.RuntimeObject objects ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUpdatedObjects_( Handle, CachedSelectors.setUpdatedObjects_, out ___occuredException, sizeof( NObjective.RuntimeObject ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject updatedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.updatedObjects( Handle, CachedSelectors.updatedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr deletedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr insertedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr lockedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDeletedObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setInsertedObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setLockedObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUpdatedObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr updatedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector deletedObjects = "deletedObjects";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector insertedObjects = "insertedObjects";
			public static readonly Selector lockedObjects = "lockedObjects";
			public static readonly Selector setDeletedObjects_ = "setDeletedObjects:";
			public static readonly Selector setInsertedObjects_ = "setInsertedObjects:";
			public static readonly Selector setLockedObjects_ = "setLockedObjects:";
			public static readonly Selector setUpdatedObjects_ = "setUpdatedObjects:";
			public static readonly Selector updatedObjects = "updatedObjects";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLAdapter : IEquatable<NSSQLAdapter> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLAdapter;
		public static implicit operator NSObject( NSSQLAdapter value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLAdapter value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLAdapter value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLAdapter?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLAdapter value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLAdapter value1, NSSQLAdapter value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLAdapter value1, NSSQLAdapter value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLAdapter( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLAdapter alloc() {
			return new NSSQLAdapter( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject connections() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.connections( Handle, CachedSelectors.connections, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject createConnection() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createConnection( Handle, CachedSelectors.createConnection, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeClass generatorClass() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generatorClass( Handle, CachedSelectors.generatorClass, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char hasOpenConnections() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasOpenConnections( Handle, CachedSelectors.hasOpenConnections, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSSQLAdapter initWithSQLCore_( NObjective.RuntimeObject core ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSQLCore_( Handle, CachedSelectors.initWithSQLCore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), core );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLAdapter( ___result );
		}
		unsafe public NObjective.RuntimeObject newCopyAndInsertStatementForManyToMany_toManyToMany_intermediateTableName_( NObjective.RuntimeObject many, NObjective.RuntimeObject toManyToMany, NObjective.RuntimeObject intermediateTableName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCopyAndInsertStatementForManyToMany_toManyToMany_intermediateTableName_( Handle, CachedSelectors.newCopyAndInsertStatementForManyToMany_toManyToMany_intermediateTableName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), many, toManyToMany, intermediateTableName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCountStatementWithFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCountStatementWithFetchRequest_( Handle, CachedSelectors.newCountStatementWithFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCreateIndexStatementForColumn_( NObjective.RuntimeObject column ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCreateIndexStatementForColumn_( Handle, CachedSelectors.newCreateIndexStatementForColumn_, out ___occuredException, sizeof( NObjective.RuntimeObject ), column );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCreateIndexStatementForColumnWithName_inTableWithName_( NObjective.RuntimeObject name, NObjective.RuntimeObject inTableWithName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCreateIndexStatementForColumnWithName_inTableWithName_( Handle, CachedSelectors.newCreateIndexStatementForColumnWithName_inTableWithName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, inTableWithName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCreateIndexStatementsForManyToMany_( NObjective.RuntimeObject many ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCreateIndexStatementsForManyToMany_( Handle, CachedSelectors.newCreateIndexStatementsForManyToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ), many );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCreatePrimaryKeyTableStatement() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCreatePrimaryKeyTableStatement( Handle, CachedSelectors.newCreatePrimaryKeyTableStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCreateTableStatementForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCreateTableStatementForEntity_( Handle, CachedSelectors.newCreateTableStatementForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newCreateTableStatementForManyToMany_( NObjective.RuntimeObject many ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newCreateTableStatementForManyToMany_( Handle, CachedSelectors.newCreateTableStatementForManyToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ), many );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newDeleteStatementWithCorrelation_( NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newDeleteStatementWithCorrelation_( Handle, CachedSelectors.newDeleteStatementWithCorrelation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newDeleteStatementWithRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newDeleteStatementWithRow_( Handle, CachedSelectors.newDeleteStatementWithRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newDropTableStatementForTableNamed_( NObjective.RuntimeObject named ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newDropTableStatementForTableNamed_( Handle, CachedSelectors.newDropTableStatementForTableNamed_, out ___occuredException, sizeof( NObjective.RuntimeObject ), named );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newGeneratorWithStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newGeneratorWithStatement_( Handle, CachedSelectors.newGeneratorWithStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newInsertStatementWithCorrelation_( NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newInsertStatementWithCorrelation_( Handle, CachedSelectors.newInsertStatementWithCorrelation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newInsertStatementWithRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newInsertStatementWithRow_( Handle, CachedSelectors.newInsertStatementWithRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newPrimaryKeyInitializeStatementForEntity_withInitialMaxPK_( NObjective.RuntimeObject entity, long withInitialMaxPK ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newPrimaryKeyInitializeStatementForEntity_withInitialMaxPK_( Handle, CachedSelectors.newPrimaryKeyInitializeStatementForEntity_withInitialMaxPK_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( long ), entity, withInitialMaxPK );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newRenameTableStatementFromManyToMany_toManyToMany_orToRandomSpot_( NObjective.RuntimeObject many, NObjective.RuntimeObject toManyToMany, NObjective.RuntimeObject orToRandomSpot ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newRenameTableStatementFromManyToMany_toManyToMany_orToRandomSpot_( Handle, CachedSelectors.newRenameTableStatementFromManyToMany_toManyToMany_orToRandomSpot_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), many, toManyToMany, orToRandomSpot );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newSelectStatementWithFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newSelectStatementWithFetchRequest_( Handle, CachedSelectors.newSelectStatementWithFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newStatementWithEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newStatementWithEntity_( Handle, CachedSelectors.newStatementWithEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newStatementWithoutEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newStatementWithoutEntity( Handle, CachedSelectors.newStatementWithoutEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newStatementWithSQLString_( NObjective.RuntimeObject @string ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newStatementWithSQLString_( Handle, CachedSelectors.newStatementWithSQLString_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @string );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newUpdateStatementWithRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newUpdateStatementWithRow_( Handle, CachedSelectors.newUpdateStatementWithRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void registerConnection_( NObjective.RuntimeObject connection ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerConnection_( Handle, CachedSelectors.registerConnection_, out ___occuredException, sizeof( NObjective.RuntimeObject ), connection );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sqlCore() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlCore( Handle, CachedSelectors.sqlCore, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint sqlTypeForExpressionConstantValue_( NObjective.RuntimeObject value ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlTypeForExpressionConstantValue_( Handle, CachedSelectors.sqlTypeForExpressionConstantValue_, out ___occuredException, sizeof( NObjective.RuntimeObject ), value );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeClass statementClass() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.statementClass( Handle, CachedSelectors.statementClass, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char supportsCorrelatedSubqueries() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.supportsCorrelatedSubqueries( Handle, CachedSelectors.supportsCorrelatedSubqueries, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject type() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.type( Handle, CachedSelectors.type, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject typeStringForColumn_( NObjective.RuntimeObject column ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.typeStringForColumn_( Handle, CachedSelectors.typeStringForColumn_, out ___occuredException, sizeof( NObjective.RuntimeObject ), column );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void unregisterConnection_( NObjective.RuntimeObject connection ) {
			RuntimeObject ___occuredException;
			NativeMethods.unregisterConnection_( Handle, CachedSelectors.unregisterConnection_, out ___occuredException, sizeof( NObjective.RuntimeObject ), connection );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject url() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.url( Handle, CachedSelectors.url, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr connections( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createConnection( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass generatorClass( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasOpenConnections( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSQLCore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject core );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCopyAndInsertStatementForManyToMany_toManyToMany_intermediateTableName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many, NObjective.RuntimeObject toManyToMany, NObjective.RuntimeObject intermediateTableName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCountStatementWithFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCreateIndexStatementForColumn_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject column );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCreateIndexStatementForColumnWithName_inTableWithName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, NObjective.RuntimeObject inTableWithName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCreateIndexStatementsForManyToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCreatePrimaryKeyTableStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCreateTableStatementForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newCreateTableStatementForManyToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newDeleteStatementWithCorrelation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newDeleteStatementWithRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newDropTableStatementForTableNamed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newGeneratorWithStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newInsertStatementWithCorrelation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newInsertStatementWithRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newPrimaryKeyInitializeStatementForEntity_withInitialMaxPK_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, long withInitialMaxPK );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newRenameTableStatementFromManyToMany_toManyToMany_orToRandomSpot_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many, NObjective.RuntimeObject toManyToMany, NObjective.RuntimeObject orToRandomSpot );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newSelectStatementWithFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newStatementWithEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newStatementWithoutEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newStatementWithSQLString_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @string );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newUpdateStatementWithRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerConnection_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject connection );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlCore( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint sqlTypeForExpressionConstantValue_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass statementClass( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char supportsCorrelatedSubqueries( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr type( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr typeStringForColumn_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject column );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void unregisterConnection_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject connection );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr url( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector connections = "connections";
			public static readonly Selector createConnection = "createConnection";
			public static readonly Selector generatorClass = "generatorClass";
			public static readonly Selector hasOpenConnections = "hasOpenConnections";
			public static readonly Selector initWithSQLCore_ = "initWithSQLCore:";
			public static readonly Selector newCopyAndInsertStatementForManyToMany_toManyToMany_intermediateTableName_ = "newCopyAndInsertStatementForManyToMany:toManyToMany:intermediateTableName:";
			public static readonly Selector newCountStatementWithFetchRequest_ = "newCountStatementWithFetchRequest:";
			public static readonly Selector newCreateIndexStatementForColumn_ = "newCreateIndexStatementForColumn:";
			public static readonly Selector newCreateIndexStatementForColumnWithName_inTableWithName_ = "newCreateIndexStatementForColumnWithName:inTableWithName:";
			public static readonly Selector newCreateIndexStatementsForManyToMany_ = "newCreateIndexStatementsForManyToMany:";
			public static readonly Selector newCreatePrimaryKeyTableStatement = "newCreatePrimaryKeyTableStatement";
			public static readonly Selector newCreateTableStatementForEntity_ = "newCreateTableStatementForEntity:";
			public static readonly Selector newCreateTableStatementForManyToMany_ = "newCreateTableStatementForManyToMany:";
			public static readonly Selector newDeleteStatementWithCorrelation_ = "newDeleteStatementWithCorrelation:";
			public static readonly Selector newDeleteStatementWithRow_ = "newDeleteStatementWithRow:";
			public static readonly Selector newDropTableStatementForTableNamed_ = "newDropTableStatementForTableNamed:";
			public static readonly Selector newGeneratorWithStatement_ = "newGeneratorWithStatement:";
			public static readonly Selector newInsertStatementWithCorrelation_ = "newInsertStatementWithCorrelation:";
			public static readonly Selector newInsertStatementWithRow_ = "newInsertStatementWithRow:";
			public static readonly Selector newPrimaryKeyInitializeStatementForEntity_withInitialMaxPK_ = "newPrimaryKeyInitializeStatementForEntity:withInitialMaxPK:";
			public static readonly Selector newRenameTableStatementFromManyToMany_toManyToMany_orToRandomSpot_ = "newRenameTableStatementFromManyToMany:toManyToMany:orToRandomSpot:";
			public static readonly Selector newSelectStatementWithFetchRequest_ = "newSelectStatementWithFetchRequest:";
			public static readonly Selector newStatementWithEntity_ = "newStatementWithEntity:";
			public static readonly Selector newStatementWithoutEntity = "newStatementWithoutEntity";
			public static readonly Selector newStatementWithSQLString_ = "newStatementWithSQLString:";
			public static readonly Selector newUpdateStatementWithRow_ = "newUpdateStatementWithRow:";
			public static readonly Selector registerConnection_ = "registerConnection:";
			public static readonly Selector sqlCore = "sqlCore";
			public static readonly Selector sqlTypeForExpressionConstantValue_ = "sqlTypeForExpressionConstantValue:";
			public static readonly Selector statementClass = "statementClass";
			public static readonly Selector supportsCorrelatedSubqueries = "supportsCorrelatedSubqueries";
			public static readonly Selector type = "type";
			public static readonly Selector typeStringForColumn_ = "typeStringForColumn:";
			public static readonly Selector unregisterConnection_ = "unregisterConnection:";
			public static readonly Selector url = "url";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLAdapterOperation : IEquatable<NSSQLAdapterOperation> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLAdapterOperation;
		public static implicit operator NSObject( NSSQLAdapterOperation value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLAdapterOperation value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLAdapterOperation value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLAdapterOperation?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLAdapterOperation value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLAdapterOperation value1, NSSQLAdapterOperation value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLAdapterOperation value1, NSSQLAdapterOperation value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLAdapterOperation( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLAdapterOperation alloc() {
			return new NSSQLAdapterOperation( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public uint adapterOperator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.adapterOperator( Handle, CachedSelectors.adapterOperator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public int compareAdapterOperation_( NObjective.RuntimeObject operation ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.compareAdapterOperation_( Handle, CachedSelectors.compareAdapterOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject correlation() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.correlation( Handle, CachedSelectors.correlation, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLAdapterOperation initWithAdapterOperator_correlation_( uint @operator, NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithAdapterOperator_correlation_( Handle, CachedSelectors.initWithAdapterOperator_correlation_, out ___occuredException, sizeof( uint ) + sizeof( NObjective.RuntimeObject ), @operator, correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLAdapterOperation( ___result );
		}
		unsafe public NSSQLAdapterOperation initWithAdapterOperator_row_( uint @operator, NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithAdapterOperator_row_( Handle, CachedSelectors.initWithAdapterOperator_row_, out ___occuredException, sizeof( uint ) + sizeof( NObjective.RuntimeObject ), @operator, row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLAdapterOperation( ___result );
		}
		unsafe public NObjective.RuntimeObject row() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.row( Handle, CachedSelectors.row, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setAdapterOperator_( uint @operator ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAdapterOperator_( Handle, CachedSelectors.setAdapterOperator_, out ___occuredException, sizeof( uint ), @operator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint adapterOperator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int compareAdapterOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr correlation( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithAdapterOperator_correlation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint @operator, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithAdapterOperator_row_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint @operator, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr row( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAdapterOperator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint @operator );
		}
		static internal class CachedSelectors {
			public static readonly Selector adapterOperator = "adapterOperator";
			public static readonly Selector compareAdapterOperation_ = "compareAdapterOperation:";
			public static readonly Selector correlation = "correlation";
			public static readonly Selector entity = "entity";
			public static readonly Selector initWithAdapterOperator_correlation_ = "initWithAdapterOperator:correlation:";
			public static readonly Selector initWithAdapterOperator_row_ = "initWithAdapterOperator:row:";
			public static readonly Selector row = "row";
			public static readonly Selector setAdapterOperator_ = "setAdapterOperator:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLAliasGenerator : IEquatable<NSSQLAliasGenerator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLAliasGenerator;
		public static implicit operator NSObject( NSSQLAliasGenerator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLAliasGenerator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLAliasGenerator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLAliasGenerator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLAliasGenerator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLAliasGenerator value1, NSSQLAliasGenerator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLAliasGenerator value1, NSSQLAliasGenerator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLAliasGenerator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLAliasGenerator alloc() {
			return new NSSQLAliasGenerator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject generateSubqueryVariableAlias() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generateSubqueryVariableAlias( Handle, CachedSelectors.generateSubqueryVariableAlias, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject generateTableAlias() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generateTableAlias( Handle, CachedSelectors.generateTableAlias, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generateSubqueryVariableAlias( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generateTableAlias( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector generateSubqueryVariableAlias = "generateSubqueryVariableAlias";
			public static readonly Selector generateTableAlias = "generateTableAlias";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLColumn ) )]
	public struct NSSQLAttribute : IEquatable<NSSQLAttribute> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLAttribute;
		public static implicit operator NSSQLColumn( NSSQLAttribute value ) {
			return new NSSQLColumn( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLAttribute value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLAttribute value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLAttribute value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLAttribute value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLAttribute value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLAttribute?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLAttribute value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLAttribute value1, NSSQLAttribute value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLAttribute value1, NSSQLAttribute value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLAttribute( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLAttribute alloc() {
			return new NSSQLAttribute( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject attributeDescription() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeDescription( Handle, CachedSelectors.attributeDescription, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public bool shouldIndex() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.shouldIndex( Handle, CachedSelectors.shouldIndex, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeDescription( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool shouldIndex( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeDescription = "attributeDescription";
			public static readonly Selector shouldIndex = "shouldIndex";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLBindVariable : IEquatable<NSSQLBindVariable> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLBindVariable;
		public static implicit operator NSObject( NSSQLBindVariable value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLBindVariable value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLBindVariable value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLBindVariable?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLBindVariable value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLBindVariable value1, NSSQLBindVariable value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLBindVariable value1, NSSQLBindVariable value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLBindVariable( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLBindVariable alloc() {
			return new NSSQLBindVariable( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject attributeDescription() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeDescription( Handle, CachedSelectors.attributeDescription, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char hasObjectValue() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasObjectValue( Handle, CachedSelectors.hasObjectValue, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint index() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.index( Handle, CachedSelectors.index, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NSSQLBindVariable initWithInt64_sqlType_( long int64, uint sqlType ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithInt64_sqlType_( Handle, CachedSelectors.initWithInt64_sqlType_, out ___occuredException, sizeof( long ) + sizeof( uint ), int64, sqlType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLBindVariable( ___result );
		}
		unsafe public NSSQLBindVariable initWithUnsignedInt_sqlType_( uint @int, uint sqlType ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithUnsignedInt_sqlType_( Handle, CachedSelectors.initWithUnsignedInt_sqlType_, out ___occuredException, sizeof( uint ) + sizeof( uint ), @int, sqlType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLBindVariable( ___result );
		}
		unsafe public NSSQLBindVariable initWithValue_sqlType_attributeDescription_( NObjective.RuntimeObject value, uint sqlType, NObjective.RuntimeObject attributeDescription ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithValue_sqlType_attributeDescription_( Handle, CachedSelectors.initWithValue_sqlType_attributeDescription_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( uint ) + sizeof( NObjective.RuntimeObject ), value, sqlType, attributeDescription );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLBindVariable( ___result );
		}
		unsafe public long int64() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.int64( Handle, CachedSelectors.int64, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setIndex_( uint index ) {
			RuntimeObject ___occuredException;
			NativeMethods.setIndex_( Handle, CachedSelectors.setIndex_, out ___occuredException, sizeof( uint ), index );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setInt64_( long int64 ) {
			RuntimeObject ___occuredException;
			NativeMethods.setInt64_( Handle, CachedSelectors.setInt64_, out ___occuredException, sizeof( long ), int64 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUnsignedInt_( uint @int ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUnsignedInt_( Handle, CachedSelectors.setUnsignedInt_, out ___occuredException, sizeof( uint ), @int );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setValue_( NObjective.RuntimeObject value ) {
			RuntimeObject ___occuredException;
			NativeMethods.setValue_( Handle, CachedSelectors.setValue_, out ___occuredException, sizeof( NObjective.RuntimeObject ), value );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint sqlType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlType( Handle, CachedSelectors.sqlType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint unsignedInt() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.unsignedInt( Handle, CachedSelectors.unsignedInt, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject value() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.value( Handle, CachedSelectors.value, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeDescription( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasObjectValue( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint index( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithInt64_sqlType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long int64, uint sqlType );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithUnsignedInt_sqlType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint @int, uint sqlType );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithValue_sqlType_attributeDescription_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, uint sqlType, NObjective.RuntimeObject attributeDescription );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long int64( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setIndex_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint index );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setInt64_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long int64 );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUnsignedInt_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint @int );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setValue_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint sqlType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint unsignedInt( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr value( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector attributeDescription = "attributeDescription";
			public static readonly Selector hasObjectValue = "hasObjectValue";
			public static readonly Selector index = "index";
			public static readonly Selector initWithInt64_sqlType_ = "initWithInt64:sqlType:";
			public static readonly Selector initWithUnsignedInt_sqlType_ = "initWithUnsignedInt:sqlType:";
			public static readonly Selector initWithValue_sqlType_attributeDescription_ = "initWithValue:sqlType:attributeDescription:";
			public static readonly Selector int64 = "int64";
			public static readonly Selector setIndex_ = "setIndex:";
			public static readonly Selector setInt64_ = "setInt64:";
			public static readonly Selector setUnsignedInt_ = "setUnsignedInt:";
			public static readonly Selector setValue_ = "setValue:";
			public static readonly Selector sqlType = "sqlType";
			public static readonly Selector unsignedInt = "unsignedInt";
			public static readonly Selector value = "value";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLChannel : IEquatable<NSSQLChannel> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLChannel;
		public static implicit operator NSObject( NSSQLChannel value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLChannel value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLChannel value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLChannel?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLChannel value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLChannel value1, NSSQLChannel value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLChannel value1, NSSQLChannel value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLChannel( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLChannel alloc() {
			return new NSSQLChannel( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject connection() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.connection( Handle, CachedSelectors.connection, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject currentContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentContext( Handle, CachedSelectors.currentContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void endFetch() {
			RuntimeObject ___occuredException;
			NativeMethods.endFetch( Handle, CachedSelectors.endFetch, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void endFetchAndRecycleStatement_( char statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.endFetchAndRecycleStatement_( Handle, CachedSelectors.endFetchAndRecycleStatement_, out ___occuredException, sizeof( char ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSSQLChannel initWithSQLCore_( NObjective.RuntimeObject core ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSQLCore_( Handle, CachedSelectors.initWithSQLCore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), core );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLChannel( ___result );
		}
		unsafe public bool isFetchInProgress() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isFetchInProgress( Handle, CachedSelectors.isFetchInProgress, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char selectCountWithFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.selectCountWithFetchRequest_( Handle, CachedSelectors.selectCountWithFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void selectRowsWithCachedStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.selectRowsWithCachedStatement_( Handle, CachedSelectors.selectRowsWithCachedStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void selectRowsWithFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			NativeMethods.selectRowsWithFetchRequest_( Handle, CachedSelectors.selectRowsWithFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void selectRowsWithStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.selectRowsWithStatement_( Handle, CachedSelectors.selectRowsWithStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setCurrentContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCurrentContext_( Handle, CachedSelectors.setCurrentContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setCurrentEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCurrentEntity_( Handle, CachedSelectors.setCurrentEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sqlCore() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlCore( Handle, CachedSelectors.sqlCore, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr connection( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr currentContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void endFetch( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void endFetchAndRecycleStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSQLCore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject core );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isFetchInProgress( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char selectCountWithFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void selectRowsWithCachedStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void selectRowsWithFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void selectRowsWithStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCurrentContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCurrentEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlCore( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector connection = "connection";
			public static readonly Selector currentContext = "currentContext";
			public static readonly Selector endFetch = "endFetch";
			public static readonly Selector endFetchAndRecycleStatement_ = "endFetchAndRecycleStatement:";
			public static readonly Selector initWithSQLCore_ = "initWithSQLCore:";
			public static readonly Selector isFetchInProgress = "isFetchInProgress";
			public static readonly Selector selectCountWithFetchRequest_ = "selectCountWithFetchRequest:";
			public static readonly Selector selectRowsWithCachedStatement_ = "selectRowsWithCachedStatement:";
			public static readonly Selector selectRowsWithFetchRequest_ = "selectRowsWithFetchRequest:";
			public static readonly Selector selectRowsWithStatement_ = "selectRowsWithStatement:";
			public static readonly Selector setCurrentContext_ = "setCurrentContext:";
			public static readonly Selector setCurrentEntity_ = "setCurrentEntity:";
			public static readonly Selector sqlCore = "sqlCore";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLProperty ) )]
	public struct NSSQLColumn : IEquatable<NSSQLColumn> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLColumn;
		public static implicit operator NSSQLProperty( NSSQLColumn value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLColumn value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLColumn value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLColumn value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLColumn value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLColumn?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLColumn value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLColumn value1, NSSQLColumn value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLColumn value1, NSSQLColumn value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLColumn( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLColumn alloc() {
			return new NSSQLColumn( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public char allowAliasing() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allowAliasing( Handle, CachedSelectors.allowAliasing, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public uint fetchIndex() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchIndex( Handle, CachedSelectors.fetchIndex, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NSSQLColumn initWithColumnName_sqlType_( NObjective.RuntimeObject name, uint sqlType ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithColumnName_sqlType_( Handle, CachedSelectors.initWithColumnName_sqlType_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( uint ), name, sqlType );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLColumn( ___result );
		}
		unsafe public uint precision() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.precision( Handle, CachedSelectors.precision, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint roughSizeEstimate() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.roughSizeEstimate( Handle, CachedSelectors.roughSizeEstimate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public int scale() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.scale( Handle, CachedSelectors.scale, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setAllowAliasing_( char aliasing ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAllowAliasing_( Handle, CachedSelectors.setAllowAliasing_, out ___occuredException, sizeof( char ), aliasing );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPrecision_( uint precision ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPrecision_( Handle, CachedSelectors.setPrecision_, out ___occuredException, sizeof( uint ), precision );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setScale_( int scale ) {
			RuntimeObject ___occuredException;
			NativeMethods.setScale_( Handle, CachedSelectors.setScale_, out ___occuredException, sizeof( int ), scale );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint sqlType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlType( Handle, CachedSelectors.sqlType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char allowAliasing( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint fetchIndex( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithColumnName_sqlType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, uint sqlType );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint precision( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint roughSizeEstimate( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int scale( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAllowAliasing_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char aliasing );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPrecision_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint precision );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setScale_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int scale );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint sqlType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector allowAliasing = "allowAliasing";
			public static readonly Selector fetchIndex = "fetchIndex";
			public static readonly Selector initWithColumnName_sqlType_ = "initWithColumnName:sqlType:";
			public static readonly Selector precision = "precision";
			public static readonly Selector roughSizeEstimate = "roughSizeEstimate";
			public static readonly Selector scale = "scale";
			public static readonly Selector setAllowAliasing_ = "setAllowAliasing:";
			public static readonly Selector setPrecision_ = "setPrecision:";
			public static readonly Selector setScale_ = "setScale:";
			public static readonly Selector sqlType = "sqlType";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLWhereIntermediate ) )]
	public struct NSSQLCompoundWhereIntermediate : IEquatable<NSSQLCompoundWhereIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLCompoundWhereIntermediate;
		public static implicit operator NSSQLWhereIntermediate( NSSQLCompoundWhereIntermediate value ) {
			return new NSSQLWhereIntermediate( value.Handle );
		}
		public static implicit operator NSSQLIntermediate( NSSQLCompoundWhereIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLCompoundWhereIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLCompoundWhereIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLCompoundWhereIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLCompoundWhereIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLCompoundWhereIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLCompoundWhereIntermediate value1, NSSQLCompoundWhereIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLCompoundWhereIntermediate value1, NSSQLCompoundWhereIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLCompoundWhereIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLCompoundWhereIntermediate alloc() {
			return new NSSQLCompoundWhereIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLConnection : IEquatable<NSSQLConnection> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLConnection;
		public static implicit operator NSObject( NSSQLConnection value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLConnection value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLConnection value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLConnection?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLConnection value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLConnection value1, NSSQLConnection value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLConnection value1, NSSQLConnection value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLConnection( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLConnection alloc() {
			return new NSSQLConnection( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject adapter() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.adapter( Handle, CachedSelectors.adapter, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void awake() {
			RuntimeObject ___occuredException;
			NativeMethods.awake( Handle, CachedSelectors.awake, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void beginTransaction() {
			RuntimeObject ___occuredException;
			NativeMethods.beginTransaction( Handle, CachedSelectors.beginTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char canConnect() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.canConnect( Handle, CachedSelectors.canConnect, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject columnsToFetch() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.columnsToFetch( Handle, CachedSelectors.columnsToFetch, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void commitTransaction() {
			RuntimeObject ___occuredException;
			NativeMethods.commitTransaction( Handle, CachedSelectors.commitTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void connect() {
			RuntimeObject ___occuredException;
			NativeMethods.connect( Handle, CachedSelectors.connect, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createIndexesForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.createIndexesForEntity_( Handle, CachedSelectors.createIndexesForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createManyToManyTablesForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.createManyToManyTablesForEntity_( Handle, CachedSelectors.createManyToManyTablesForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createMetadata() {
			RuntimeObject ___occuredException;
			NativeMethods.createMetadata( Handle, CachedSelectors.createMetadata, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createPrimaryKeyTableForModel_knownEmpty_( NObjective.RuntimeObject model, char knownEmpty ) {
			RuntimeObject ___occuredException;
			NativeMethods.createPrimaryKeyTableForModel_knownEmpty_( Handle, CachedSelectors.createPrimaryKeyTableForModel_knownEmpty_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ), model, knownEmpty );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createSchema() {
			RuntimeObject ___occuredException;
			NativeMethods.createSchema( Handle, CachedSelectors.createSchema, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createTableForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.createTableForEntity_( Handle, CachedSelectors.createTableForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void createTablesForEntities_( NObjective.RuntimeObject entities ) {
			RuntimeObject ___occuredException;
			NativeMethods.createTablesForEntities_( Handle, CachedSelectors.createTablesForEntities_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char databaseIsEmpty() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseIsEmpty( Handle, CachedSelectors.databaseIsEmpty, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void deleteCorrelation_( NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			NativeMethods.deleteCorrelation_( Handle, CachedSelectors.deleteCorrelation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void deleteRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			NativeMethods.deleteRow_( Handle, CachedSelectors.deleteRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject describeResults() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.describeResults( Handle, CachedSelectors.describeResults, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void didCreateSchema() {
			RuntimeObject ___occuredException;
			NativeMethods.didCreateSchema( Handle, CachedSelectors.didCreateSchema, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void disconnect() {
			RuntimeObject ___occuredException;
			NativeMethods.disconnect( Handle, CachedSelectors.disconnect, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void endFetch() {
			RuntimeObject ___occuredException;
			NativeMethods.endFetch( Handle, CachedSelectors.endFetch, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void endPrimaryKeyGeneration() {
			RuntimeObject ___occuredException;
			NativeMethods.endPrimaryKeyGeneration( Handle, CachedSelectors.endPrimaryKeyGeneration, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void execute() {
			RuntimeObject ___occuredException;
			NativeMethods.execute( Handle, CachedSelectors.execute, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public long fetchMaxPrimaryKeyForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchMaxPrimaryKeyForEntity_( Handle, CachedSelectors.fetchMaxPrimaryKeyForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject fetchMetadata() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchMetadata( Handle, CachedSelectors.fetchMetadata, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint fetchResultSet_usingFetchPlan_( System.IntPtr @set, System.IntPtr usingFetchPlan ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchResultSet_usingFetchPlan_( Handle, CachedSelectors.fetchResultSet_usingFetchPlan_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( System.IntPtr ), @set, usingFetchPlan );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject fetchTableCreationSQL() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchTableCreationSQL( Handle, CachedSelectors.fetchTableCreationSQL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject fetchTableNames() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchTableNames( Handle, CachedSelectors.fetchTableNames, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void forceTransactionClosed() {
			RuntimeObject ___occuredException;
			NativeMethods.forceTransactionClosed( Handle, CachedSelectors.forceTransactionClosed, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public long generatePrimaryKeysForEntity_batch_( NObjective.RuntimeObject entity, uint batch ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generatePrimaryKeysForEntity_batch_( Handle, CachedSelectors.generatePrimaryKeysForEntity_batch_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( uint ), entity, batch );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char hasMetadataTable() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasMetadataTable( Handle, CachedSelectors.hasMetadataTable, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char hasOpenTransaction() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasOpenTransaction( Handle, CachedSelectors.hasOpenTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char hasPrimaryKeyTable() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasPrimaryKeyTable( Handle, CachedSelectors.hasPrimaryKeyTable, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSSQLConnection initWithAdapter_( NObjective.RuntimeObject adapter ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithAdapter_( Handle, CachedSelectors.initWithAdapter_, out ___occuredException, sizeof( NObjective.RuntimeObject ), adapter );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLConnection( ___result );
		}
		unsafe public void insertCorrelation_( NObjective.RuntimeObject correlation ) {
			RuntimeObject ___occuredException;
			NativeMethods.insertCorrelation_( Handle, CachedSelectors.insertCorrelation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), correlation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void insertRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			NativeMethods.insertRow_( Handle, CachedSelectors.insertRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public bool isFetchInProgress() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isFetchInProgress( Handle, CachedSelectors.isFetchInProgress, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isOpen() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isOpen( Handle, CachedSelectors.isOpen, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject metadataColumns() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.metadataColumns( Handle, CachedSelectors.metadataColumns, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newFetchedArray() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newFetchedArray( Handle, CachedSelectors.newFetchedArray, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void performAdapterOperation_( NObjective.RuntimeObject operation ) {
			RuntimeObject ___occuredException;
			NativeMethods.performAdapterOperation_( Handle, CachedSelectors.performAdapterOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void performAdapterOperations_( NObjective.RuntimeObject operations ) {
			RuntimeObject ___occuredException;
			NativeMethods.performAdapterOperations_( Handle, CachedSelectors.performAdapterOperations_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operations );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareAndExecuteSQLStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareAndExecuteSQLStatement_( Handle, CachedSelectors.prepareAndExecuteSQLStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareForPrimaryKeyGeneration() {
			RuntimeObject ___occuredException;
			NativeMethods.prepareForPrimaryKeyGeneration( Handle, CachedSelectors.prepareForPrimaryKeyGeneration, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareSQLStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareSQLStatement_( Handle, CachedSelectors.prepareSQLStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void releaseSQLStatement() {
			RuntimeObject ___occuredException;
			NativeMethods.releaseSQLStatement( Handle, CachedSelectors.releaseSQLStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void resetSQLStatement() {
			RuntimeObject ___occuredException;
			NativeMethods.resetSQLStatement( Handle, CachedSelectors.resetSQLStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void rollbackTransaction() {
			RuntimeObject ___occuredException;
			NativeMethods.rollbackTransaction( Handle, CachedSelectors.rollbackTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void saveMetadata_( NObjective.RuntimeObject metadata ) {
			RuntimeObject ___occuredException;
			NativeMethods.saveMetadata_( Handle, CachedSelectors.saveMetadata_, out ___occuredException, sizeof( NObjective.RuntimeObject ), metadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void selectAttributes_fetchRequest_lock_entity_( NObjective.RuntimeObject attributes, NObjective.RuntimeObject fetchRequest, char @lock, NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.selectAttributes_fetchRequest_lock_entity_( Handle, CachedSelectors.selectAttributes_fetchRequest_lock_entity_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ) + sizeof( NObjective.RuntimeObject ), attributes, fetchRequest, @lock, entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setColumnsToFetch_( NObjective.RuntimeObject fetch ) {
			RuntimeObject ___occuredException;
			NativeMethods.setColumnsToFetch_( Handle, CachedSelectors.setColumnsToFetch_, out ___occuredException, sizeof( NObjective.RuntimeObject ), fetch );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setExclusiveLockingMode_( char mode ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExclusiveLockingMode_( Handle, CachedSelectors.setExclusiveLockingMode_, out ___occuredException, sizeof( char ), mode );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void sleep() {
			RuntimeObject ___occuredException;
			NativeMethods.sleep( Handle, CachedSelectors.sleep, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sqlStatement() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlStatement( Handle, CachedSelectors.sqlStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void transactionDidBegin() {
			RuntimeObject ___occuredException;
			NativeMethods.transactionDidBegin( Handle, CachedSelectors.transactionDidBegin, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void transactionDidCommit() {
			RuntimeObject ___occuredException;
			NativeMethods.transactionDidCommit( Handle, CachedSelectors.transactionDidCommit, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void transactionDidRollback() {
			RuntimeObject ___occuredException;
			NativeMethods.transactionDidRollback( Handle, CachedSelectors.transactionDidRollback, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void updateRow_( NObjective.RuntimeObject row ) {
			RuntimeObject ___occuredException;
			NativeMethods.updateRow_( Handle, CachedSelectors.updateRow_, out ___occuredException, sizeof( NObjective.RuntimeObject ), row );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void willCreateSchema() {
			RuntimeObject ___occuredException;
			NativeMethods.willCreateSchema( Handle, CachedSelectors.willCreateSchema, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr adapter( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void awake( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void beginTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char canConnect( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr columnsToFetch( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void commitTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void connect( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createIndexesForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createManyToManyTablesForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createMetadata( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createPrimaryKeyTableForModel_knownEmpty_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model, char knownEmpty );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createSchema( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createTableForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createTablesForEntities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char databaseIsEmpty( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void deleteCorrelation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void deleteRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr describeResults( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didCreateSchema( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void disconnect( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void endFetch( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void endPrimaryKeyGeneration( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void execute( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long fetchMaxPrimaryKeyForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchMetadata( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint fetchResultSet_usingFetchPlan_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr @set, System.IntPtr usingFetchPlan );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchTableCreationSQL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchTableNames( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void forceTransactionClosed( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long generatePrimaryKeysForEntity_batch_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, uint batch );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasMetadataTable( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasOpenTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasPrimaryKeyTable( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithAdapter_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject adapter );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void insertCorrelation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject correlation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void insertRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isFetchInProgress( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isOpen( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr metadataColumns( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newFetchedArray( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void performAdapterOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void performAdapterOperations_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operations );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareAndExecuteSQLStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareForPrimaryKeyGeneration( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareSQLStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void releaseSQLStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void resetSQLStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void rollbackTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void saveMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject metadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void selectAttributes_fetchRequest_lock_entity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject attributes, NObjective.RuntimeObject fetchRequest, char @lock, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setColumnsToFetch_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject fetch );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExclusiveLockingMode_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char mode );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void sleep( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void transactionDidBegin( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void transactionDidCommit( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void transactionDidRollback( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void updateRow_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willCreateSchema( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector adapter = "adapter";
			public static readonly Selector awake = "awake";
			public static readonly Selector beginTransaction = "beginTransaction";
			public static readonly Selector canConnect = "canConnect";
			public static readonly Selector columnsToFetch = "columnsToFetch";
			public static readonly Selector commitTransaction = "commitTransaction";
			public static readonly Selector connect = "connect";
			public static readonly Selector createIndexesForEntity_ = "createIndexesForEntity:";
			public static readonly Selector createManyToManyTablesForEntity_ = "createManyToManyTablesForEntity:";
			public static readonly Selector createMetadata = "createMetadata";
			public static readonly Selector createPrimaryKeyTableForModel_knownEmpty_ = "createPrimaryKeyTableForModel:knownEmpty:";
			public static readonly Selector createSchema = "createSchema";
			public static readonly Selector createTableForEntity_ = "createTableForEntity:";
			public static readonly Selector createTablesForEntities_ = "createTablesForEntities:";
			public static readonly Selector databaseIsEmpty = "databaseIsEmpty";
			public static readonly Selector deleteCorrelation_ = "deleteCorrelation:";
			public static readonly Selector deleteRow_ = "deleteRow:";
			public static readonly Selector describeResults = "describeResults";
			public static readonly Selector didCreateSchema = "didCreateSchema";
			public static readonly Selector disconnect = "disconnect";
			public static readonly Selector endFetch = "endFetch";
			public static readonly Selector endPrimaryKeyGeneration = "endPrimaryKeyGeneration";
			public static readonly Selector execute = "execute";
			public static readonly Selector fetchMaxPrimaryKeyForEntity_ = "fetchMaxPrimaryKeyForEntity:";
			public static readonly Selector fetchMetadata = "fetchMetadata";
			public static readonly Selector fetchResultSet_usingFetchPlan_ = "fetchResultSet:usingFetchPlan:";
			public static readonly Selector fetchTableCreationSQL = "fetchTableCreationSQL";
			public static readonly Selector fetchTableNames = "fetchTableNames";
			public static readonly Selector forceTransactionClosed = "forceTransactionClosed";
			public static readonly Selector generatePrimaryKeysForEntity_batch_ = "generatePrimaryKeysForEntity:batch:";
			public static readonly Selector hasMetadataTable = "hasMetadataTable";
			public static readonly Selector hasOpenTransaction = "hasOpenTransaction";
			public static readonly Selector hasPrimaryKeyTable = "hasPrimaryKeyTable";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithAdapter_ = "initWithAdapter:";
			public static readonly Selector insertCorrelation_ = "insertCorrelation:";
			public static readonly Selector insertRow_ = "insertRow:";
			public static readonly Selector isFetchInProgress = "isFetchInProgress";
			public static readonly Selector isOpen = "isOpen";
			public static readonly Selector metadataColumns = "metadataColumns";
			public static readonly Selector newFetchedArray = "newFetchedArray";
			public static readonly Selector performAdapterOperation_ = "performAdapterOperation:";
			public static readonly Selector performAdapterOperations_ = "performAdapterOperations:";
			public static readonly Selector prepareAndExecuteSQLStatement_ = "prepareAndExecuteSQLStatement:";
			public static readonly Selector prepareForPrimaryKeyGeneration = "prepareForPrimaryKeyGeneration";
			public static readonly Selector prepareSQLStatement_ = "prepareSQLStatement:";
			public static readonly Selector releaseSQLStatement = "releaseSQLStatement";
			public static readonly Selector resetSQLStatement = "resetSQLStatement";
			public static readonly Selector rollbackTransaction = "rollbackTransaction";
			public static readonly Selector saveMetadata_ = "saveMetadata:";
			public static readonly Selector selectAttributes_fetchRequest_lock_entity_ = "selectAttributes:fetchRequest:lock:entity:";
			public static readonly Selector setColumnsToFetch_ = "setColumnsToFetch:";
			public static readonly Selector setExclusiveLockingMode_ = "setExclusiveLockingMode:";
			public static readonly Selector sleep = "sleep";
			public static readonly Selector sqlStatement = "sqlStatement";
			public static readonly Selector transactionDidBegin = "transactionDidBegin";
			public static readonly Selector transactionDidCommit = "transactionDidCommit";
			public static readonly Selector transactionDidRollback = "transactionDidRollback";
			public static readonly Selector updateRow_ = "updateRow:";
			public static readonly Selector willCreateSchema = "willCreateSchema";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLConstantValueIntermediate : IEquatable<NSSQLConstantValueIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLConstantValueIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLConstantValueIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLConstantValueIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLConstantValueIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLConstantValueIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLConstantValueIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLConstantValueIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLConstantValueIntermediate value1, NSSQLConstantValueIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLConstantValueIntermediate value1, NSSQLConstantValueIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLConstantValueIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLConstantValueIntermediate alloc() {
			return new NSSQLConstantValueIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLConstantValueIntermediate initWithConstantValue_inScope_( NObjective.RuntimeObject value, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithConstantValue_inScope_( Handle, CachedSelectors.initWithConstantValue_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLConstantValueIntermediate( ___result );
		}
		unsafe public NSSQLConstantValueIntermediate initWithConstantValue_ofType_inScope_( NObjective.RuntimeObject value, uint ofType, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithConstantValue_ofType_inScope_( Handle, CachedSelectors.initWithConstantValue_ofType_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( uint ) + sizeof( NObjective.RuntimeObject ), value, ofType, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLConstantValueIntermediate( ___result );
		}
		unsafe public uint sqlTypeForPropertyAtEndOfKeyPathExpression_( NObjective.RuntimeObject expression ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlTypeForPropertyAtEndOfKeyPathExpression_( Handle, CachedSelectors.sqlTypeForPropertyAtEndOfKeyPathExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithConstantValue_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject inScope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithConstantValue_ofType_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, uint ofType, NObjective.RuntimeObject inScope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint sqlTypeForPropertyAtEndOfKeyPathExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithConstantValue_inScope_ = "initWithConstantValue:inScope:";
			public static readonly Selector initWithConstantValue_ofType_inScope_ = "initWithConstantValue:ofType:inScope:";
			public static readonly Selector sqlTypeForPropertyAtEndOfKeyPathExpression_ = "sqlTypeForPropertyAtEndOfKeyPathExpression:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStore ) )]
	public struct NSSQLCore : IEquatable<NSSQLCore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLCore;
		public static implicit operator NSPersistentStore( NSSQLCore value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSSQLCore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLCore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLCore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLCore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLCore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLCore value1, NSSQLCore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLCore value1, NSSQLCore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLCore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLCore alloc() {
			return new NSSQLCore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static char coloredLoggingDefault() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.coloredLoggingDefault( ClassHandle, CachedSelectors.coloredLoggingDefault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static int debugDefault() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.debugDefault( ClassHandle, CachedSelectors.debugDefault, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void setColoredLoggingDefault_( char @default ) {
			RuntimeObject ___occuredException;
			NativeMethods.setColoredLoggingDefault_( ClassHandle, CachedSelectors.setColoredLoggingDefault_, out ___occuredException, sizeof( char ), @default );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static void setDebugDefault_( int @default ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDebugDefault_( ClassHandle, CachedSelectors.setDebugDefault_, out ___occuredException, sizeof( int ), @default );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static void setSQLGenerationV1Default_( char @default ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSQLGenerationV1Default_( ClassHandle, CachedSelectors.setSQLGenerationV1Default_, out ___occuredException, sizeof( char ), @default );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static char SQLGenerationV1Default() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.SQLGenerationV1Default( ClassHandle, CachedSelectors.SQLGenerationV1Default, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject adapter() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.adapter( Handle, CachedSelectors.adapter, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject availableChannel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.availableChannel( Handle, CachedSelectors.availableChannel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void beginTransaction() {
			RuntimeObject ___occuredException;
			NativeMethods.beginTransaction( Handle, CachedSelectors.beginTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject channels() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.channels( Handle, CachedSelectors.channels, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void commitChanges_( NObjective.RuntimeObject changes ) {
			RuntimeObject ___occuredException;
			NativeMethods.commitChanges_( Handle, CachedSelectors.commitChanges_, out ___occuredException, sizeof( NObjective.RuntimeObject ), changes );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void commitTransaction() {
			RuntimeObject ___occuredException;
			NativeMethods.commitTransaction( Handle, CachedSelectors.commitTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject connection() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.connection( Handle, CachedSelectors.connection, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject coordinator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.coordinator( Handle, CachedSelectors.coordinator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject countForFetchRequest_inContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject inContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.countForFetchRequest_inContext_( Handle, CachedSelectors.countForFetchRequest_inContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, inContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void createAdapterOperationsForDatabaseOperation_( NObjective.RuntimeObject operation ) {
			RuntimeObject ___occuredException;
			NativeMethods.createAdapterOperationsForDatabaseOperation_( Handle, CachedSelectors.createAdapterOperationsForDatabaseOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject createChannel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createChannel( Handle, CachedSelectors.createChannel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject currentContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.currentContext( Handle, CachedSelectors.currentContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject databaseOperationForGlobalID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseOperationForGlobalID_( Handle, CachedSelectors.databaseOperationForGlobalID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject databaseOperationForObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseOperationForObject_( Handle, CachedSelectors.databaseOperationForObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject databaseUUID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseUUID( Handle, CachedSelectors.databaseUUID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityForEntityDescription_( NObjective.RuntimeObject description ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityForEntityDescription_( Handle, CachedSelectors.entityForEntityDescription_, out ___occuredException, sizeof( NObjective.RuntimeObject ), description );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityForFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityForFetchRequest_( Handle, CachedSelectors.entityForFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityForObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityForObject_( Handle, CachedSelectors.entityForObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityNameOrderingArrayForEntities_( NObjective.RuntimeObject entities ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityNameOrderingArrayForEntities_( Handle, CachedSelectors.entityNameOrderingArrayForEntities_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject fetchRowForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchRowForObjectID_( Handle, CachedSelectors.fetchRowForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void forgetSnapshotForGlobalID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			NativeMethods.forgetSnapshotForGlobalID_( Handle, CachedSelectors.forgetSnapshotForGlobalID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void forgetSnapshotsForGlobalIDs_( NObjective.RuntimeObject ds ) {
			RuntimeObject ___occuredException;
			NativeMethods.forgetSnapshotsForGlobalIDs_( Handle, CachedSelectors.forgetSnapshotsForGlobalIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ), ds );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void generatePrimaryKeysForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.generatePrimaryKeysForEntity_( Handle, CachedSelectors.generatePrimaryKeysForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject hackQueryForManyToManyPrefetching_andSourceObjectIDs_( NObjective.RuntimeObject prefetching, NObjective.RuntimeObject andSourceObjectIDs ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hackQueryForManyToManyPrefetching_andSourceObjectIDs_( Handle, CachedSelectors.hackQueryForManyToManyPrefetching_andSourceObjectIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), prefetching, andSourceObjectIDs );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char handlesFetchRequest_( NObjective.RuntimeObject request ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.handlesFetchRequest_( Handle, CachedSelectors.handlesFetchRequest_, out ___occuredException, sizeof( NObjective.RuntimeObject ), request );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void insertEntity_intoOrderingArray_withDependencies_processingSet_( NObjective.RuntimeObject entity, NObjective.RuntimeObject intoOrderingArray, NObjective.RuntimeObject withDependencies, NObjective.RuntimeObject processingSet ) {
			RuntimeObject ___occuredException;
			NativeMethods.insertEntity_intoOrderingArray_withDependencies_processingSet_( Handle, CachedSelectors.insertEntity_intoOrderingArray_withDependencies_processingSet_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, intoOrderingArray, withDependencies, processingSet );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void invalidateObjectsWithGlobalIDs_( NObjective.RuntimeObject ds ) {
			RuntimeObject ___occuredException;
			NativeMethods.invalidateObjectsWithGlobalIDs_( Handle, CachedSelectors.invalidateObjectsWithGlobalIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ), ds );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject localSnapshotForGlobalID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.localSnapshotForGlobalID_( Handle, CachedSelectors.localSnapshotForGlobalID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject missingObjectGlobalIDs() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.missingObjectGlobalIDs( Handle, CachedSelectors.missingObjectGlobalIDs, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject model() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.model( Handle, CachedSelectors.model, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newAdapterForModel_( NObjective.RuntimeObject model ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newAdapterForModel_( Handle, CachedSelectors.newAdapterForModel_, out ___occuredException, sizeof( NObjective.RuntimeObject ), model );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newFaultingPredicateForSourceID_andRelationship_( NObjective.RuntimeObject id, NObjective.RuntimeObject andRelationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newFaultingPredicateForSourceID_andRelationship_( Handle, CachedSelectors.newFaultingPredicateForSourceID_andRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, andRelationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newFetchedPKsForSourceID_andRelationship_( NObjective.RuntimeObject id, NObjective.RuntimeObject andRelationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newFetchedPKsForSourceID_andRelationship_( Handle, CachedSelectors.newFetchedPKsForSourceID_andRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), id, andRelationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newForeignKeyID_entity_( long id, NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newForeignKeyID_entity_( Handle, CachedSelectors.newForeignKeyID_entity_, out ___occuredException, sizeof( long ) + sizeof( NObjective.RuntimeObject ), id, entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newObjectIDForEntity_pk_( NObjective.RuntimeObject entity, long pk ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newObjectIDForEntity_pk_( Handle, CachedSelectors.newObjectIDForEntity_pk_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( long ), entity, pk );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newObjectIDSetsForToManyPrefetchingRequest_andSourceObjectIDs_( NObjective.RuntimeObject request, NObjective.RuntimeObject andSourceObjectIDs ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newObjectIDSetsForToManyPrefetchingRequest_andSourceObjectIDs_( Handle, CachedSelectors.newObjectIDSetsForToManyPrefetchingRequest_andSourceObjectIDs_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, andSourceObjectIDs );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject newRowsForFetchPlan_( System.IntPtr plan ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newRowsForFetchPlan_( Handle, CachedSelectors.newRowsForFetchPlan_, out ___occuredException, sizeof( System.IntPtr ), plan );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeClass objectIDFactoryForSQLEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectIDFactoryForSQLEntity_( Handle, CachedSelectors.objectIDFactoryForSQLEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject objectsForFetchRequest_inContext_( NObjective.RuntimeObject request, NObjective.RuntimeObject inContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectsForFetchRequest_inContext_( Handle, CachedSelectors.objectsForFetchRequest_inContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), request, inContext );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject orderAdapterOperations() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.orderAdapterOperations( Handle, CachedSelectors.orderAdapterOperations, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char ownsGlobalID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.ownsGlobalID_( Handle, CachedSelectors.ownsGlobalID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char ownsObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.ownsObject_( Handle, CachedSelectors.ownsObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void performChanges() {
			RuntimeObject ___occuredException;
			NativeMethods.performChanges( Handle, CachedSelectors.performChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void prepareForSave_( NObjective.RuntimeObject save ) {
			RuntimeObject ___occuredException;
			NativeMethods.prepareForSave_( Handle, CachedSelectors.prepareForSave_, out ___occuredException, sizeof( NObjective.RuntimeObject ), save );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject rawSQLTextForToManyFaultStatement_stripBindVariables_swapEKPK_( NObjective.RuntimeObject statement, char stripBindVariables, char swapEKPK ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rawSQLTextForToManyFaultStatement_stripBindVariables_swapEKPK_( Handle, CachedSelectors.rawSQLTextForToManyFaultStatement_stripBindVariables_swapEKPK_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ) + sizeof( char ), statement, stripBindVariables, swapEKPK );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void recordChangesInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordChangesInContext_( Handle, CachedSelectors.recordChangesInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordDatabaseOperation_( NObjective.RuntimeObject operation ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordDatabaseOperation_( Handle, CachedSelectors.recordDatabaseOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordDeleteForObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordDeleteForObject_( Handle, CachedSelectors.recordDeleteForObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordPrimaryKey_forInsertedObject_withSQLEntity_( long key, NObjective.RuntimeObject forInsertedObject, NObjective.RuntimeObject withSQLEntity ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordPrimaryKey_forInsertedObject_withSQLEntity_( Handle, CachedSelectors.recordPrimaryKey_forInsertedObject_withSQLEntity_, out ___occuredException, sizeof( long ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), key, forInsertedObject, withSQLEntity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordSnapshot_forObjectID_( NObjective.RuntimeObject snapshot, NObjective.RuntimeObject forObjectID ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordSnapshot_forObjectID_( Handle, CachedSelectors.recordSnapshot_forObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), snapshot, forObjectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordSnapshots_( NObjective.RuntimeObject snapshots ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordSnapshots_( Handle, CachedSelectors.recordSnapshots_, out ___occuredException, sizeof( NObjective.RuntimeObject ), snapshots );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordToMany_forSourceObjectID_relationshipName_( NObjective.RuntimeObject many, NObjective.RuntimeObject forSourceObjectID, NObjective.RuntimeObject relationshipName ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordToMany_forSourceObjectID_relationshipName_( Handle, CachedSelectors.recordToMany_forSourceObjectID_relationshipName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), many, forSourceObjectID, relationshipName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordToManyInsertsForObject_withOperation_( NObjective.RuntimeObject @object, NObjective.RuntimeObject withOperation ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordToManyInsertsForObject_withOperation_( Handle, CachedSelectors.recordToManyInsertsForObject_withOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, withOperation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordToManyUpdatesForObject_withOperation_( NObjective.RuntimeObject @object, NObjective.RuntimeObject withOperation ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordToManyUpdatesForObject_withOperation_( Handle, CachedSelectors.recordToManyUpdatesForObject_withOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, withOperation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordUpdateForObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordUpdateForObject_( Handle, CachedSelectors.recordUpdateForObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void recordValuesForInsertedObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.recordValuesForInsertedObject_( Handle, CachedSelectors.recordValuesForInsertedObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject refreshObjects_( NObjective.RuntimeObject objects ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.refreshObjects_( Handle, CachedSelectors.refreshObjects_, out ___occuredException, sizeof( NObjective.RuntimeObject ), objects );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void registerChannel_( NObjective.RuntimeObject channel ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerChannel_( Handle, CachedSelectors.registerChannel_, out ___occuredException, sizeof( NObjective.RuntimeObject ), channel );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void rollbackChanges() {
			RuntimeObject ___occuredException;
			NativeMethods.rollbackChanges( Handle, CachedSelectors.rollbackChanges, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void rollbackTransaction() {
			RuntimeObject ___occuredException;
			NativeMethods.rollbackTransaction( Handle, CachedSelectors.rollbackTransaction, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject rowCache() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rowCache( Handle, CachedSelectors.rowCache, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject rowForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rowForObjectID_( Handle, CachedSelectors.rowForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject rowForObjectID_after_( NObjective.RuntimeObject id, double after ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rowForObjectID_after_( Handle, CachedSelectors.rowForObjectID_after_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( double ), id, after );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject saveChanges_( NObjective.RuntimeObject changes ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.saveChanges_( Handle, CachedSelectors.saveChanges_, out ___occuredException, sizeof( NObjective.RuntimeObject ), changes );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setCurrentContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCurrentContext_( Handle, CachedSelectors.setCurrentContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDatabaseUUID_( NObjective.RuntimeObject uuid ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDatabaseUUID_( Handle, CachedSelectors.setDatabaseUUID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), uuid );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setExclusiveLockingMode_( char mode ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExclusiveLockingMode_( Handle, CachedSelectors.setExclusiveLockingMode_, out ___occuredException, sizeof( char ), mode );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void unregisterChannel_( NObjective.RuntimeObject channel ) {
			RuntimeObject ___occuredException;
			NativeMethods.unregisterChannel_( Handle, CachedSelectors.unregisterChannel_, out ___occuredException, sizeof( NObjective.RuntimeObject ), channel );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr adapter( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr availableChannel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void beginTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr channels( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char coloredLoggingDefault( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void commitChanges_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject changes );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void commitTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr connection( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr coordinator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr countForFetchRequest_inContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject inContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createAdapterOperationsForDatabaseOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createChannel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr currentContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr databaseOperationForGlobalID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr databaseOperationForObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr databaseUUID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int debugDefault( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityForEntityDescription_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject description );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityForFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityForObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityNameOrderingArrayForEntities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchRowForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void forgetSnapshotForGlobalID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void forgetSnapshotsForGlobalIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject ds );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void generatePrimaryKeysForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr hackQueryForManyToManyPrefetching_andSourceObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject prefetching, NObjective.RuntimeObject andSourceObjectIDs );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char handlesFetchRequest_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void insertEntity_intoOrderingArray_withDependencies_processingSet_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject intoOrderingArray, NObjective.RuntimeObject withDependencies, NObjective.RuntimeObject processingSet );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void invalidateObjectsWithGlobalIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject ds );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr localSnapshotForGlobalID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr missingObjectGlobalIDs( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr model( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newAdapterForModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newFaultingPredicateForSourceID_andRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject andRelationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newFetchedPKsForSourceID_andRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject andRelationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newForeignKeyID_entity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long id, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newObjectIDForEntity_pk_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, long pk );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newObjectIDSetsForToManyPrefetchingRequest_andSourceObjectIDs_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject andSourceObjectIDs );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newRowsForFetchPlan_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr plan );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass objectIDFactoryForSQLEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectsForFetchRequest_inContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, NObjective.RuntimeObject inContext );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr orderAdapterOperations( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char ownsGlobalID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char ownsObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void performChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareForSave_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject save );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rawSQLTextForToManyFaultStatement_stripBindVariables_swapEKPK_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement, char stripBindVariables, char swapEKPK );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordChangesInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordDatabaseOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordDeleteForObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordPrimaryKey_forInsertedObject_withSQLEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long key, NObjective.RuntimeObject forInsertedObject, NObjective.RuntimeObject withSQLEntity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordSnapshot_forObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject snapshot, NObjective.RuntimeObject forObjectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordSnapshots_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject snapshots );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordToMany_forSourceObjectID_relationshipName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many, NObjective.RuntimeObject forSourceObjectID, NObjective.RuntimeObject relationshipName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordToManyInsertsForObject_withOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject withOperation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordToManyUpdatesForObject_withOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject withOperation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordUpdateForObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void recordValuesForInsertedObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr refreshObjects_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject objects );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerChannel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject channel );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void rollbackChanges( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void rollbackTransaction( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rowCache( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rowForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rowForObjectID_after_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, double after );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr saveChanges_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject changes );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setColoredLoggingDefault_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char @default );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCurrentContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDatabaseUUID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject uuid );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDebugDefault_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int @default );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExclusiveLockingMode_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char mode );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSQLGenerationV1Default_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char @default );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char SQLGenerationV1Default( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void unregisterChannel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject channel );
		}
		static internal class CachedSelectors {
			public static readonly Selector adapter = "adapter";
			public static readonly Selector availableChannel = "availableChannel";
			public static readonly Selector beginTransaction = "beginTransaction";
			public static readonly Selector channels = "channels";
			public static readonly Selector coloredLoggingDefault = "coloredLoggingDefault";
			public static readonly Selector commitChanges_ = "commitChanges:";
			public static readonly Selector commitTransaction = "commitTransaction";
			public static readonly Selector connection = "connection";
			public static readonly Selector coordinator = "coordinator";
			public static readonly Selector countForFetchRequest_inContext_ = "countForFetchRequest:inContext:";
			public static readonly Selector createAdapterOperationsForDatabaseOperation_ = "createAdapterOperationsForDatabaseOperation:";
			public static readonly Selector createChannel = "createChannel";
			public static readonly Selector currentContext = "currentContext";
			public static readonly Selector databaseOperationForGlobalID_ = "databaseOperationForGlobalID:";
			public static readonly Selector databaseOperationForObject_ = "databaseOperationForObject:";
			public static readonly Selector databaseUUID = "databaseUUID";
			public static readonly Selector debugDefault = "debugDefault";
			public static readonly Selector entityForEntityDescription_ = "entityForEntityDescription:";
			public static readonly Selector entityForFetchRequest_ = "entityForFetchRequest:";
			public static readonly Selector entityForObject_ = "entityForObject:";
			public static readonly Selector entityNameOrderingArrayForEntities_ = "entityNameOrderingArrayForEntities:";
			public static readonly Selector fetchRowForObjectID_ = "fetchRowForObjectID:";
			public static readonly Selector forgetSnapshotForGlobalID_ = "forgetSnapshotForGlobalID:";
			public static readonly Selector forgetSnapshotsForGlobalIDs_ = "forgetSnapshotsForGlobalIDs:";
			public static readonly Selector generatePrimaryKeysForEntity_ = "generatePrimaryKeysForEntity:";
			public static readonly Selector hackQueryForManyToManyPrefetching_andSourceObjectIDs_ = "hackQueryForManyToManyPrefetching:andSourceObjectIDs:";
			public static readonly Selector handlesFetchRequest_ = "handlesFetchRequest:";
			public static readonly Selector insertEntity_intoOrderingArray_withDependencies_processingSet_ = "insertEntity:intoOrderingArray:withDependencies:processingSet:";
			public static readonly Selector invalidateObjectsWithGlobalIDs_ = "invalidateObjectsWithGlobalIDs:";
			public static readonly Selector localSnapshotForGlobalID_ = "localSnapshotForGlobalID:";
			public static readonly Selector missingObjectGlobalIDs = "missingObjectGlobalIDs";
			public static readonly Selector model = "model";
			public static readonly Selector newAdapterForModel_ = "newAdapterForModel:";
			public static readonly Selector newFaultingPredicateForSourceID_andRelationship_ = "newFaultingPredicateForSourceID:andRelationship:";
			public static readonly Selector newFetchedPKsForSourceID_andRelationship_ = "newFetchedPKsForSourceID:andRelationship:";
			public static readonly Selector newForeignKeyID_entity_ = "newForeignKeyID:entity:";
			public static readonly Selector newObjectIDForEntity_pk_ = "newObjectIDForEntity:pk:";
			public static readonly Selector newObjectIDSetsForToManyPrefetchingRequest_andSourceObjectIDs_ = "newObjectIDSetsForToManyPrefetchingRequest:andSourceObjectIDs:";
			public static readonly Selector newRowsForFetchPlan_ = "newRowsForFetchPlan:";
			public static readonly Selector objectIDFactoryForSQLEntity_ = "objectIDFactoryForSQLEntity:";
			public static readonly Selector objectsForFetchRequest_inContext_ = "objectsForFetchRequest:inContext:";
			public static readonly Selector orderAdapterOperations = "orderAdapterOperations";
			public static readonly Selector ownsGlobalID_ = "ownsGlobalID:";
			public static readonly Selector ownsObject_ = "ownsObject:";
			public static readonly Selector performChanges = "performChanges";
			public static readonly Selector prepareForSave_ = "prepareForSave:";
			public static readonly Selector rawSQLTextForToManyFaultStatement_stripBindVariables_swapEKPK_ = "rawSQLTextForToManyFaultStatement:stripBindVariables:swapEKPK:";
			public static readonly Selector recordChangesInContext_ = "recordChangesInContext:";
			public static readonly Selector recordDatabaseOperation_ = "recordDatabaseOperation:";
			public static readonly Selector recordDeleteForObject_ = "recordDeleteForObject:";
			public static readonly Selector recordPrimaryKey_forInsertedObject_withSQLEntity_ = "recordPrimaryKey:forInsertedObject:withSQLEntity:";
			public static readonly Selector recordSnapshot_forObjectID_ = "recordSnapshot:forObjectID:";
			public static readonly Selector recordSnapshots_ = "recordSnapshots:";
			public static readonly Selector recordToMany_forSourceObjectID_relationshipName_ = "recordToMany:forSourceObjectID:relationshipName:";
			public static readonly Selector recordToManyInsertsForObject_withOperation_ = "recordToManyInsertsForObject:withOperation:";
			public static readonly Selector recordToManyUpdatesForObject_withOperation_ = "recordToManyUpdatesForObject:withOperation:";
			public static readonly Selector recordUpdateForObject_ = "recordUpdateForObject:";
			public static readonly Selector recordValuesForInsertedObject_ = "recordValuesForInsertedObject:";
			public static readonly Selector refreshObjects_ = "refreshObjects:";
			public static readonly Selector registerChannel_ = "registerChannel:";
			public static readonly Selector rollbackChanges = "rollbackChanges";
			public static readonly Selector rollbackTransaction = "rollbackTransaction";
			public static readonly Selector rowCache = "rowCache";
			public static readonly Selector rowForObjectID_ = "rowForObjectID:";
			public static readonly Selector rowForObjectID_after_ = "rowForObjectID:after:";
			public static readonly Selector saveChanges_ = "saveChanges:";
			public static readonly Selector setColoredLoggingDefault_ = "setColoredLoggingDefault:";
			public static readonly Selector setCurrentContext_ = "setCurrentContext:";
			public static readonly Selector setDatabaseUUID_ = "setDatabaseUUID:";
			public static readonly Selector setDebugDefault_ = "setDebugDefault:";
			public static readonly Selector setExclusiveLockingMode_ = "setExclusiveLockingMode:";
			public static readonly Selector setSQLGenerationV1Default_ = "setSQLGenerationV1Default:";
			public static readonly Selector SQLGenerationV1Default = "SQLGenerationV1Default";
			public static readonly Selector unregisterChannel_ = "unregisterChannel:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLCorrelation : IEquatable<NSSQLCorrelation> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLCorrelation;
		public static implicit operator NSObject( NSSQLCorrelation value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLCorrelation value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLCorrelation value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLCorrelation?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLCorrelation value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLCorrelation value1, NSSQLCorrelation value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLCorrelation value1, NSSQLCorrelation value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLCorrelation( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLCorrelation alloc() {
			return new NSSQLCorrelation( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public long fk() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fk( Handle, CachedSelectors.fk, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSSQLCorrelation initWithManyToMany_fk_invfk_( NObjective.RuntimeObject many, long fk, long invfk ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithManyToMany_fk_invfk_( Handle, CachedSelectors.initWithManyToMany_fk_invfk_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( long ) + sizeof( long ), many, fk, invfk );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLCorrelation( ___result );
		}
		unsafe public long invfk() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.invfk( Handle, CachedSelectors.invfk, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject manyToMany() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.manyToMany( Handle, CachedSelectors.manyToMany, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long fk( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithManyToMany_fk_invfk_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many, long fk, long invfk );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long invfk( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr manyToMany( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector fk = "fk";
			public static readonly Selector initWithManyToMany_fk_invfk_ = "initWithManyToMany:fk:invfk:";
			public static readonly Selector invfk = "invfk";
			public static readonly Selector manyToMany = "manyToMany";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapping ) )]
	public struct NSSQLEntity : IEquatable<NSSQLEntity> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLEntity;
		public static implicit operator NSStoreMapping( NSSQLEntity value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLEntity value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLEntity value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLEntity value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLEntity?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLEntity value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLEntity value1, NSSQLEntity value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLEntity value1, NSSQLEntity value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLEntity( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLEntity alloc() {
			return new NSSQLEntity( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void addInsertedObject_( NObjective.RuntimeObject @object ) {
			RuntimeObject ___occuredException;
			NativeMethods.addInsertedObject_( Handle, CachedSelectors.addInsertedObject_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @object );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject attributeColumns() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeColumns( Handle, CachedSelectors.attributeColumns, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject attributeNamed_( NObjective.RuntimeObject named ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeNamed_( Handle, CachedSelectors.attributeNamed_, out ___occuredException, sizeof( NObjective.RuntimeObject ), named );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject attributes() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributes( Handle, CachedSelectors.attributes, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void cacheDeletionStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.cacheDeletionStatement_( Handle, CachedSelectors.cacheDeletionStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void cacheFaultingStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.cacheFaultingStatement_( Handle, CachedSelectors.cacheFaultingStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void cacheFaultingStatement_forRelationship_( NObjective.RuntimeObject statement, NObjective.RuntimeObject forRelationship ) {
			RuntimeObject ___occuredException;
			NativeMethods.cacheFaultingStatement_forRelationship_( Handle, CachedSelectors.cacheFaultingStatement_forRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), statement, forRelationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void cacheInsertStatement_( NObjective.RuntimeObject statement ) {
			RuntimeObject ___occuredException;
			NativeMethods.cacheInsertStatement_( Handle, CachedSelectors.cacheInsertStatement_, out ___occuredException, sizeof( NObjective.RuntimeObject ), statement );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void clearCachedStatements() {
			RuntimeObject ___occuredException;
			NativeMethods.clearCachedStatements( Handle, CachedSelectors.clearCachedStatements, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void clearInsertedObjects() {
			RuntimeObject ___occuredException;
			NativeMethods.clearInsertedObjects( Handle, CachedSelectors.clearInsertedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject columnsToFetch() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.columnsToFetch( Handle, CachedSelectors.columnsToFetch, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject deletionStatement() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.deletionStatement( Handle, CachedSelectors.deletionStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityDescription() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityDescription( Handle, CachedSelectors.entityDescription, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint entityID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityID( Handle, CachedSelectors.entityID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject faultingStatement() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.faultingStatement( Handle, CachedSelectors.faultingStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject faultingStatementForRelationship_( NObjective.RuntimeObject relationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.faultingStatementForRelationship_( Handle, CachedSelectors.faultingStatementForRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ), relationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint fetchIndexForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchIndexForKey_( Handle, CachedSelectors.fetchIndexForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject foreignEntityKeyColumns() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignEntityKeyColumns( Handle, CachedSelectors.foreignEntityKeyColumns, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject foreignKeyColumns() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKeyColumns( Handle, CachedSelectors.foreignKeyColumns, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char hasInheritance() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasInheritance( Handle, CachedSelectors.hasInheritance, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char hasSubentities() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.hasSubentities( Handle, CachedSelectors.hasSubentities, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSSQLEntity initWithModel_entityDescription_( NObjective.RuntimeObject model, NObjective.RuntimeObject entityDescription ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithModel_entityDescription_( Handle, CachedSelectors.initWithModel_entityDescription_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), model, entityDescription );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLEntity( ___result );
		}
		unsafe public NObjective.RuntimeObject insertedObjects() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.insertedObjects( Handle, CachedSelectors.insertedObjects, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject insertStatement() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.insertStatement( Handle, CachedSelectors.insertStatement, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public bool isRootEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isRootEntity( Handle, CachedSelectors.isRootEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject manyToManyRelationships() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.manyToManyRelationships( Handle, CachedSelectors.manyToManyRelationships, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingGenerator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingGenerator( Handle, CachedSelectors.mappingGenerator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject model() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.model( Handle, CachedSelectors.model, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject name() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.name( Handle, CachedSelectors.name, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public long nextPrimaryKey64() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.nextPrimaryKey64( Handle, CachedSelectors.nextPrimaryKey64, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject optLockKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.optLockKey( Handle, CachedSelectors.optLockKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject primaryKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.primaryKey( Handle, CachedSelectors.primaryKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject properties() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.properties( Handle, CachedSelectors.properties, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject propertiesByName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertiesByName( Handle, CachedSelectors.propertiesByName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject propertyNamed_( NObjective.RuntimeObject named ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertyNamed_( Handle, CachedSelectors.propertyNamed_, out ___occuredException, sizeof( NObjective.RuntimeObject ), named );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject relationshipNamed_( NObjective.RuntimeObject named ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipNamed_( Handle, CachedSelectors.relationshipNamed_, out ___occuredException, sizeof( NObjective.RuntimeObject ), named );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject rootEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rootEntity( Handle, CachedSelectors.rootEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void seedPrimaryKey64_batch_( long key64, uint batch ) {
			RuntimeObject ___occuredException;
			NativeMethods.seedPrimaryKey64_batch_( Handle, CachedSelectors.seedPrimaryKey64_batch_, out ___occuredException, sizeof( long ) + sizeof( uint ), key64, batch );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSubentities_( NObjective.RuntimeObject subentities ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSubentities_( Handle, CachedSelectors.setSubentities_, out ___occuredException, sizeof( NObjective.RuntimeObject ), subentities );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSuperentity_( NObjective.RuntimeObject superentity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSuperentity_( Handle, CachedSelectors.setSuperentity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), superentity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject subentities() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentities( Handle, CachedSelectors.subentities, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject subentityKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentityKey( Handle, CachedSelectors.subentityKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint subentityMaxID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subentityMaxID( Handle, CachedSelectors.subentityMaxID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject superentity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.superentity( Handle, CachedSelectors.superentity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject tableName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.tableName( Handle, CachedSelectors.tableName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject toManyRelationships() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.toManyRelationships( Handle, CachedSelectors.toManyRelationships, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addInsertedObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeColumns( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeNamed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributes( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void cacheDeletionStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void cacheFaultingStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void cacheFaultingStatement_forRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement, NObjective.RuntimeObject forRelationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void cacheInsertStatement_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject statement );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void clearCachedStatements( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void clearInsertedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr columnsToFetch( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr deletionStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityDescription( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint entityID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr faultingStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr faultingStatementForRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint fetchIndexForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignEntityKeyColumns( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignKeyColumns( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasInheritance( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char hasSubentities( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithModel_entityDescription_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model, NObjective.RuntimeObject entityDescription );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr insertedObjects( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr insertStatement( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isRootEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr manyToManyRelationships( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingGenerator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr model( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr name( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long nextPrimaryKey64( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr optLockKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr primaryKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr properties( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr propertiesByName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr propertyNamed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipNamed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rootEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void seedPrimaryKey64_batch_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long key64, uint batch );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSubentities_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject subentities );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSuperentity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject superentity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr subentities( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr subentityKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint subentityMaxID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr superentity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr tableName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr toManyRelationships( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector addInsertedObject_ = "addInsertedObject:";
			public static readonly Selector attributeColumns = "attributeColumns";
			public static readonly Selector attributeNamed_ = "attributeNamed:";
			public static readonly Selector attributes = "attributes";
			public static readonly Selector cacheDeletionStatement_ = "cacheDeletionStatement:";
			public static readonly Selector cacheFaultingStatement_ = "cacheFaultingStatement:";
			public static readonly Selector cacheFaultingStatement_forRelationship_ = "cacheFaultingStatement:forRelationship:";
			public static readonly Selector cacheInsertStatement_ = "cacheInsertStatement:";
			public static readonly Selector clearCachedStatements = "clearCachedStatements";
			public static readonly Selector clearInsertedObjects = "clearInsertedObjects";
			public static readonly Selector columnsToFetch = "columnsToFetch";
			public static readonly Selector deletionStatement = "deletionStatement";
			public static readonly Selector entityDescription = "entityDescription";
			public static readonly Selector entityID = "entityID";
			public static readonly Selector faultingStatement = "faultingStatement";
			public static readonly Selector faultingStatementForRelationship_ = "faultingStatementForRelationship:";
			public static readonly Selector fetchIndexForKey_ = "fetchIndexForKey:";
			public static readonly Selector foreignEntityKeyColumns = "foreignEntityKeyColumns";
			public static readonly Selector foreignKeyColumns = "foreignKeyColumns";
			public static readonly Selector hasInheritance = "hasInheritance";
			public static readonly Selector hasSubentities = "hasSubentities";
			public static readonly Selector initWithModel_entityDescription_ = "initWithModel:entityDescription:";
			public static readonly Selector insertedObjects = "insertedObjects";
			public static readonly Selector insertStatement = "insertStatement";
			public static readonly Selector isRootEntity = "isRootEntity";
			public static readonly Selector manyToManyRelationships = "manyToManyRelationships";
			public static readonly Selector mappingGenerator = "mappingGenerator";
			public static readonly Selector model = "model";
			public static readonly Selector name = "name";
			public static readonly Selector nextPrimaryKey64 = "nextPrimaryKey64";
			public static readonly Selector optLockKey = "optLockKey";
			public static readonly Selector primaryKey = "primaryKey";
			public static readonly Selector properties = "properties";
			public static readonly Selector propertiesByName = "propertiesByName";
			public static readonly Selector propertyNamed_ = "propertyNamed:";
			public static readonly Selector relationshipNamed_ = "relationshipNamed:";
			public static readonly Selector rootEntity = "rootEntity";
			public static readonly Selector seedPrimaryKey64_batch_ = "seedPrimaryKey64:batch:";
			public static readonly Selector setSubentities_ = "setSubentities:";
			public static readonly Selector setSuperentity_ = "setSuperentity:";
			public static readonly Selector subentities = "subentities";
			public static readonly Selector subentityKey = "subentityKey";
			public static readonly Selector subentityMaxID = "subentityMaxID";
			public static readonly Selector superentity = "superentity";
			public static readonly Selector tableName = "tableName";
			public static readonly Selector toManyRelationships = "toManyRelationships";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLColumn ) )]
	public struct NSSQLEntityKey : IEquatable<NSSQLEntityKey> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLEntityKey;
		public static implicit operator NSSQLColumn( NSSQLEntityKey value ) {
			return new NSSQLColumn( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLEntityKey value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLEntityKey value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLEntityKey value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLEntityKey value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLEntityKey value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLEntityKey?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLEntityKey value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLEntityKey value1, NSSQLEntityKey value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLEntityKey value1, NSSQLEntityKey value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLEntityKey( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLEntityKey alloc() {
			return new NSSQLEntityKey( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLExpressionIntermediate : IEquatable<NSSQLExpressionIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLExpressionIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLExpressionIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLExpressionIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLExpressionIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLExpressionIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLExpressionIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLExpressionIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLExpressionIntermediate value1, NSSQLExpressionIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLExpressionIntermediate value1, NSSQLExpressionIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLExpressionIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLExpressionIntermediate alloc() {
			return new NSSQLExpressionIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLExpressionIntermediate initWithExpression_allowToMany_inScope_( NObjective.RuntimeObject expression, char allowToMany, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithExpression_allowToMany_inScope_( Handle, CachedSelectors.initWithExpression_allowToMany_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ) + sizeof( NObjective.RuntimeObject ), expression, allowToMany, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLExpressionIntermediate( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithExpression_allowToMany_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression, char allowToMany, NObjective.RuntimeObject inScope );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithExpression_allowToMany_inScope_ = "initWithExpression:allowToMany:inScope:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLFetchIntermediate ) )]
	public struct NSSQLFetchCountIntermediate : IEquatable<NSSQLFetchCountIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLFetchCountIntermediate;
		public static implicit operator NSSQLFetchIntermediate( NSSQLFetchCountIntermediate value ) {
			return new NSSQLFetchIntermediate( value.Handle );
		}
		public static implicit operator NSSQLIntermediate( NSSQLFetchCountIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLFetchCountIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLFetchCountIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLFetchCountIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLFetchCountIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLFetchCountIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLFetchCountIntermediate value1, NSSQLFetchCountIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLFetchCountIntermediate value1, NSSQLFetchCountIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLFetchCountIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLFetchCountIntermediate alloc() {
			return new NSSQLFetchCountIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLFetchIntermediate : IEquatable<NSSQLFetchIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLFetchIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLFetchIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLFetchIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLFetchIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLFetchIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLFetchIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLFetchIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLFetchIntermediate value1, NSSQLFetchIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLFetchIntermediate value1, NSSQLFetchIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLFetchIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLFetchIntermediate alloc() {
			return new NSSQLFetchIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void addJoinIntermediate_atKeypath_( NObjective.RuntimeObject intermediate, NObjective.RuntimeObject atKeypath ) {
			RuntimeObject ___occuredException;
			NativeMethods.addJoinIntermediate_atKeypath_( Handle, CachedSelectors.addJoinIntermediate_atKeypath_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), intermediate, atKeypath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject finalJoinForKeypath_( NObjective.RuntimeObject keypath ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.finalJoinForKeypath_( Handle, CachedSelectors.finalJoinForKeypath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keypath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLFetchIntermediate initWithEntity_alias_inScope_( NObjective.RuntimeObject entity, NObjective.RuntimeObject alias, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_alias_inScope_( Handle, CachedSelectors.initWithEntity_alias_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, alias, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLFetchIntermediate( ___result );
		}
		unsafe public NObjective.RuntimeObject joinIntermediates() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.joinIntermediates( Handle, CachedSelectors.joinIntermediates, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void selectDistinct() {
			RuntimeObject ___occuredException;
			NativeMethods.selectDistinct( Handle, CachedSelectors.selectDistinct, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject selectIntermediate() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.selectIntermediate( Handle, CachedSelectors.selectIntermediate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setCorrelationToken_( NObjective.RuntimeObject token ) {
			RuntimeObject ___occuredException;
			NativeMethods.setCorrelationToken_( Handle, CachedSelectors.setCorrelationToken_, out ___occuredException, sizeof( NObjective.RuntimeObject ), token );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setGoverningAlias_( NObjective.RuntimeObject alias ) {
			RuntimeObject ___occuredException;
			NativeMethods.setGoverningAlias_( Handle, CachedSelectors.setGoverningAlias_, out ___occuredException, sizeof( NObjective.RuntimeObject ), alias );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setGoverningEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setGoverningEntity_( Handle, CachedSelectors.setGoverningEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setLimitIntermediate_( NObjective.RuntimeObject intermediate ) {
			RuntimeObject ___occuredException;
			NativeMethods.setLimitIntermediate_( Handle, CachedSelectors.setLimitIntermediate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), intermediate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setOrderIntermediate_( NObjective.RuntimeObject intermediate ) {
			RuntimeObject ___occuredException;
			NativeMethods.setOrderIntermediate_( Handle, CachedSelectors.setOrderIntermediate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), intermediate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSelectIntermediate_( NObjective.RuntimeObject intermediate ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSelectIntermediate_( Handle, CachedSelectors.setSelectIntermediate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), intermediate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setWhereIntermediate_( NObjective.RuntimeObject intermediate ) {
			RuntimeObject ___occuredException;
			NativeMethods.setWhereIntermediate_( Handle, CachedSelectors.setWhereIntermediate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), intermediate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addJoinIntermediate_atKeypath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject intermediate, NObjective.RuntimeObject atKeypath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr finalJoinForKeypath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keypath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_alias_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject alias, NObjective.RuntimeObject inScope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr joinIntermediates( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void selectDistinct( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr selectIntermediate( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setCorrelationToken_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject token );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setGoverningAlias_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject alias );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setGoverningEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setLimitIntermediate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject intermediate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setOrderIntermediate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject intermediate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSelectIntermediate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject intermediate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setWhereIntermediate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject intermediate );
		}
		static internal class CachedSelectors {
			public static readonly Selector addJoinIntermediate_atKeypath_ = "addJoinIntermediate:atKeypath:";
			public static readonly Selector finalJoinForKeypath_ = "finalJoinForKeypath:";
			public static readonly Selector initWithEntity_alias_inScope_ = "initWithEntity:alias:inScope:";
			public static readonly Selector joinIntermediates = "joinIntermediates";
			public static readonly Selector selectDistinct = "selectDistinct";
			public static readonly Selector selectIntermediate = "selectIntermediate";
			public static readonly Selector setCorrelationToken_ = "setCorrelationToken:";
			public static readonly Selector setGoverningAlias_ = "setGoverningAlias:";
			public static readonly Selector setGoverningEntity_ = "setGoverningEntity:";
			public static readonly Selector setLimitIntermediate_ = "setLimitIntermediate:";
			public static readonly Selector setOrderIntermediate_ = "setOrderIntermediate:";
			public static readonly Selector setSelectIntermediate_ = "setSelectIntermediate:";
			public static readonly Selector setWhereIntermediate_ = "setWhereIntermediate:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLColumn ) )]
	public struct NSSQLForeignEntityKey : IEquatable<NSSQLForeignEntityKey> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLForeignEntityKey;
		public static implicit operator NSSQLColumn( NSSQLForeignEntityKey value ) {
			return new NSSQLColumn( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLForeignEntityKey value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLForeignEntityKey value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLForeignEntityKey value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLForeignEntityKey value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLForeignEntityKey value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLForeignEntityKey?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLForeignEntityKey value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLForeignEntityKey value1, NSSQLForeignEntityKey value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLForeignEntityKey value1, NSSQLForeignEntityKey value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLForeignEntityKey( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLForeignEntityKey alloc() {
			return new NSSQLForeignEntityKey( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject foreignKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKey( Handle, CachedSelectors.foreignKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLForeignEntityKey initWithEntity_foreignKey_( NObjective.RuntimeObject entity, NObjective.RuntimeObject foreignKey ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_foreignKey_( Handle, CachedSelectors.initWithEntity_foreignKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, foreignKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLForeignEntityKey( ___result );
		}
		unsafe public NObjective.RuntimeObject toOneRelationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.toOneRelationship( Handle, CachedSelectors.toOneRelationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_foreignKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject foreignKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr toOneRelationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector foreignKey = "foreignKey";
			public static readonly Selector initWithEntity_foreignKey_ = "initWithEntity:foreignKey:";
			public static readonly Selector toOneRelationship = "toOneRelationship";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLColumn ) )]
	public struct NSSQLForeignKey : IEquatable<NSSQLForeignKey> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLForeignKey;
		public static implicit operator NSSQLColumn( NSSQLForeignKey value ) {
			return new NSSQLColumn( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLForeignKey value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLForeignKey value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLForeignKey value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLForeignKey value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLForeignKey value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLForeignKey?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLForeignKey value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLForeignKey value1, NSSQLForeignKey value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLForeignKey value1, NSSQLForeignKey value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLForeignKey( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLForeignKey alloc() {
			return new NSSQLForeignKey( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLForeignKey initWithEntity_toOneRelationship_( NObjective.RuntimeObject entity, NObjective.RuntimeObject toOneRelationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_toOneRelationship_( Handle, CachedSelectors.initWithEntity_toOneRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, toOneRelationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLForeignKey( ___result );
		}
		unsafe public NObjective.RuntimeObject toOneRelationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.toOneRelationship( Handle, CachedSelectors.toOneRelationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_toOneRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject toOneRelationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr toOneRelationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithEntity_toOneRelationship_ = "initWithEntity:toOneRelationship:";
			public static readonly Selector toOneRelationship = "toOneRelationship";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLConstantValueIntermediate ) )]
	public struct NSSQLForeignKeyIntermediate : IEquatable<NSSQLForeignKeyIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLForeignKeyIntermediate;
		public static implicit operator NSSQLConstantValueIntermediate( NSSQLForeignKeyIntermediate value ) {
			return new NSSQLConstantValueIntermediate( value.Handle );
		}
		public static implicit operator NSSQLIntermediate( NSSQLForeignKeyIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLForeignKeyIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLForeignKeyIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLForeignKeyIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLForeignKeyIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLForeignKeyIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLForeignKeyIntermediate value1, NSSQLForeignKeyIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLForeignKeyIntermediate value1, NSSQLForeignKeyIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLForeignKeyIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLForeignKeyIntermediate alloc() {
			return new NSSQLForeignKeyIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLGenerator : IEquatable<NSSQLGenerator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLGenerator;
		public static implicit operator NSObject( NSSQLGenerator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLGenerator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLGenerator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLGenerator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLGenerator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLGenerator value1, NSSQLGenerator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLGenerator value1, NSSQLGenerator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLGenerator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLGenerator alloc() {
			return new NSSQLGenerator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject generateIntermediatesForFetchInContext_countOnly_( NObjective.RuntimeObject context, char countOnly ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generateIntermediatesForFetchInContext_countOnly_( Handle, CachedSelectors.generateIntermediatesForFetchInContext_countOnly_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ), context, countOnly );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void generateLimitIntermediateInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.generateLimitIntermediateInContext_( Handle, CachedSelectors.generateLimitIntermediateInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void generateOrderIntermediateInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.generateOrderIntermediateInContext_( Handle, CachedSelectors.generateOrderIntermediateInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void generateSelectIntermediateInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.generateSelectIntermediateInContext_( Handle, CachedSelectors.generateSelectIntermediateInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject generateSQLStatementForFetchRequest_ignoreInheritance_countOnly_( NObjective.RuntimeObject request, char ignoreInheritance, char countOnly ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generateSQLStatementForFetchRequest_ignoreInheritance_countOnly_( Handle, CachedSelectors.generateSQLStatementForFetchRequest_ignoreInheritance_countOnly_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ) + sizeof( char ), request, ignoreInheritance, countOnly );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void generateWhereIntermediatesInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			NativeMethods.generateWhereIntermediatesInContext_( Handle, CachedSelectors.generateWhereIntermediatesInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSSQLGenerator initializeContextForFetchRequest_ignoreInheritance_( NObjective.RuntimeObject request, char ignoreInheritance ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initializeContextForFetchRequest_ignoreInheritance_( Handle, CachedSelectors.initializeContextForFetchRequest_ignoreInheritance_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ), request, ignoreInheritance );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLGenerator( ___result );
		}
		unsafe public NSSQLGenerator initWithPersistentStore_( NObjective.RuntimeObject store ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithPersistentStore_( Handle, CachedSelectors.initWithPersistentStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLGenerator( ___result );
		}
		unsafe public NObjective.RuntimeObject predicateForFetchRequestInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.predicateForFetchRequestInContext_( Handle, CachedSelectors.predicateForFetchRequestInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generateIntermediatesForFetchInContext_countOnly_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, char countOnly );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void generateLimitIntermediateInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void generateOrderIntermediateInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void generateSelectIntermediateInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generateSQLStatementForFetchRequest_ignoreInheritance_countOnly_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, char ignoreInheritance, char countOnly );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void generateWhereIntermediatesInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initializeContextForFetchRequest_ignoreInheritance_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject request, char ignoreInheritance );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPersistentStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr predicateForFetchRequestInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector generateIntermediatesForFetchInContext_countOnly_ = "generateIntermediatesForFetchInContext:countOnly:";
			public static readonly Selector generateLimitIntermediateInContext_ = "generateLimitIntermediateInContext:";
			public static readonly Selector generateOrderIntermediateInContext_ = "generateOrderIntermediateInContext:";
			public static readonly Selector generateSelectIntermediateInContext_ = "generateSelectIntermediateInContext:";
			public static readonly Selector generateSQLStatementForFetchRequest_ignoreInheritance_countOnly_ = "generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:";
			public static readonly Selector generateWhereIntermediatesInContext_ = "generateWhereIntermediatesInContext:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initializeContextForFetchRequest_ignoreInheritance_ = "initializeContextForFetchRequest:ignoreInheritance:";
			public static readonly Selector initWithPersistentStore_ = "initWithPersistentStore:";
			public static readonly Selector predicateForFetchRequestInContext_ = "predicateForFetchRequestInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLIntermediate : IEquatable<NSSQLIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLIntermediate;
		public static implicit operator NSObject( NSSQLIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLIntermediate value1, NSSQLIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLIntermediate value1, NSSQLIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLIntermediate alloc() {
			return new NSSQLIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public char expressionIsBasicKeypath_( NObjective.RuntimeObject keypath ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.expressionIsBasicKeypath_( Handle, CachedSelectors.expressionIsBasicKeypath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keypath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject fetchContext() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchContext( Handle, CachedSelectors.fetchContext, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject fetchIntermediateForKeypathExpression_( NObjective.RuntimeObject expression ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.fetchIntermediateForKeypathExpression_( Handle, CachedSelectors.fetchIntermediateForKeypathExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject generateSQLStringInContext_( NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generateSQLStringInContext_( Handle, CachedSelectors.generateSQLStringInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject governingAlias() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.governingAlias( Handle, CachedSelectors.governingAlias, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject governingAliasForKeypathExpression_( NObjective.RuntimeObject expression ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.governingAliasForKeypathExpression_( Handle, CachedSelectors.governingAliasForKeypathExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject governingEntityForKeypathExpression_( NObjective.RuntimeObject expression ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.governingEntityForKeypathExpression_( Handle, CachedSelectors.governingEntityForKeypathExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLIntermediate initWithScope_( NObjective.RuntimeObject scope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithScope_( Handle, CachedSelectors.initWithScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ), scope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLIntermediate( ___result );
		}
		unsafe public bool isOrScoped() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isOrScoped( Handle, CachedSelectors.isOrScoped, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isSimpleKeypath_( NObjective.RuntimeObject keypath ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isSimpleKeypath_( Handle, CachedSelectors.isSimpleKeypath_, out ___occuredException, sizeof( NObjective.RuntimeObject ), keypath );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isVariableBasedKeypathScopedBySubquery_( NObjective.RuntimeObject subquery ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isVariableBasedKeypathScopedBySubquery_( Handle, CachedSelectors.isVariableBasedKeypathScopedBySubquery_, out ___occuredException, sizeof( NObjective.RuntimeObject ), subquery );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char keypathExpressionIsSafeLHSForIn_( NObjective.RuntimeObject @in ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.keypathExpressionIsSafeLHSForIn_( Handle, CachedSelectors.keypathExpressionIsSafeLHSForIn_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @in );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject scope() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.scope( Handle, CachedSelectors.scope, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char expressionIsBasicKeypath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keypath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchContext( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr fetchIntermediateForKeypathExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generateSQLStringInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr governingAlias( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr governingAliasForKeypathExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr governingEntityForKeypathExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject scope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isOrScoped( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isSimpleKeypath_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keypath );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isVariableBasedKeypathScopedBySubquery_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject subquery );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char keypathExpressionIsSafeLHSForIn_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @in );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr scope( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector expressionIsBasicKeypath_ = "expressionIsBasicKeypath:";
			public static readonly Selector fetchContext = "fetchContext";
			public static readonly Selector fetchIntermediateForKeypathExpression_ = "fetchIntermediateForKeypathExpression:";
			public static readonly Selector generateSQLStringInContext_ = "generateSQLStringInContext:";
			public static readonly Selector governingAlias = "governingAlias";
			public static readonly Selector governingAliasForKeypathExpression_ = "governingAliasForKeypathExpression:";
			public static readonly Selector governingEntityForKeypathExpression_ = "governingEntityForKeypathExpression:";
			public static readonly Selector initWithScope_ = "initWithScope:";
			public static readonly Selector isOrScoped = "isOrScoped";
			public static readonly Selector isSimpleKeypath_ = "isSimpleKeypath:";
			public static readonly Selector isVariableBasedKeypathScopedBySubquery_ = "isVariableBasedKeypathScopedBySubquery:";
			public static readonly Selector keypathExpressionIsSafeLHSForIn_ = "keypathExpressionIsSafeLHSForIn:";
			public static readonly Selector scope = "scope";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLAdapter ) )]
	public struct NSSQLiteAdapter : IEquatable<NSSQLiteAdapter> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLiteAdapter;
		public static implicit operator NSSQLAdapter( NSSQLiteAdapter value ) {
			return new NSSQLAdapter( value.Handle );
		}
		public static implicit operator NSObject( NSSQLiteAdapter value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLiteAdapter value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLiteAdapter value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLiteAdapter?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLiteAdapter value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLiteAdapter value1, NSSQLiteAdapter value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLiteAdapter value1, NSSQLiteAdapter value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLiteAdapter( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLiteAdapter alloc() {
			return new NSSQLiteAdapter( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject pathnameForDatabase() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.pathnameForDatabase( Handle, CachedSelectors.pathnameForDatabase, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sqliteVersion() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqliteVersion( Handle, CachedSelectors.sqliteVersion, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr pathnameForDatabase( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqliteVersion( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector pathnameForDatabase = "pathnameForDatabase";
			public static readonly Selector sqliteVersion = "sqliteVersion";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLConnection ) )]
	public struct NSSQLiteConnection : IEquatable<NSSQLiteConnection> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLiteConnection;
		public static implicit operator NSSQLConnection( NSSQLiteConnection value ) {
			return new NSSQLConnection( value.Handle );
		}
		public static implicit operator NSObject( NSSQLiteConnection value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLiteConnection value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLiteConnection value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLiteConnection?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLiteConnection value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLiteConnection value1, NSSQLiteConnection value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLiteConnection value1, NSSQLiteConnection value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLiteConnection( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLiteConnection alloc() {
			return new NSSQLiteConnection( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void cacheCurrentDBStatementOn_( NObjective.RuntimeObject @on ) {
			RuntimeObject ___occuredException;
			NativeMethods.cacheCurrentDBStatementOn_( Handle, CachedSelectors.cacheCurrentDBStatementOn_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @on );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void handleCorruptedDB_( NObjective.RuntimeObject db ) {
			RuntimeObject ___occuredException;
			NativeMethods.handleCorruptedDB_( Handle, CachedSelectors.handleCorruptedDB_, out ___occuredException, sizeof( NObjective.RuntimeObject ), db );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public char performIntegrityCheck() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.performIntegrityCheck( Handle, CachedSelectors.performIntegrityCheck, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void cacheCurrentDBStatementOn_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @on );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void handleCorruptedDB_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject db );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char performIntegrityCheck( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector cacheCurrentDBStatementOn_ = "cacheCurrentDBStatementOn:";
			public static readonly Selector handleCorruptedDB_ = "handleCorruptedDB:";
			public static readonly Selector performIntegrityCheck = "performIntegrityCheck";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLStatement ) )]
	public struct NSSQLiteStatement : IEquatable<NSSQLiteStatement> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLiteStatement;
		public static implicit operator NSSQLStatement( NSSQLiteStatement value ) {
			return new NSSQLStatement( value.Handle );
		}
		public static implicit operator NSObject( NSSQLiteStatement value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLiteStatement value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLiteStatement value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLiteStatement?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLiteStatement value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLiteStatement value1, NSSQLiteStatement value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLiteStatement value1, NSSQLiteStatement value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLiteStatement( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLiteStatement alloc() {
			return new NSSQLiteStatement( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLJoinIntermediate : IEquatable<NSSQLJoinIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLJoinIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLJoinIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLJoinIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLJoinIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLJoinIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLJoinIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLJoinIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLJoinIntermediate value1, NSSQLJoinIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLJoinIntermediate value1, NSSQLJoinIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLJoinIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLJoinIntermediate alloc() {
			return new NSSQLJoinIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject createJoinIntermediatesForKeypath_startEntity_startAlias_forScope_inFetchIntermediate_inContext_( NObjective.RuntimeObject keypath, NObjective.RuntimeObject startEntity, NObjective.RuntimeObject startAlias, NObjective.RuntimeObject forScope, NObjective.RuntimeObject inFetchIntermediate, NObjective.RuntimeObject inContext ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createJoinIntermediatesForKeypath_startEntity_startAlias_forScope_inFetchIntermediate_inContext_( ClassHandle, CachedSelectors.createJoinIntermediatesForKeypath_startEntity_startAlias_forScope_inFetchIntermediate_inContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), keypath, startEntity, startAlias, forScope, inFetchIntermediate, inContext
			 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static NObjective.RuntimeObject createManyToManyJoinIntermediateForProperty_direct_lastStep_inScope_context_( NObjective.RuntimeObject property, char direct, NObjective.RuntimeObject lastStep, NObjective.RuntimeObject inScope, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createManyToManyJoinIntermediateForProperty_direct_lastStep_inScope_context_( ClassHandle, CachedSelectors.createManyToManyJoinIntermediateForProperty_direct_lastStep_inScope_context_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( char ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), property, direct, lastStep, inScope, context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static NObjective.RuntimeObject createToManyJoinIntermediateForProperty_lastStep_inScope_context_( NObjective.RuntimeObject property, NObjective.RuntimeObject lastStep, NObjective.RuntimeObject inScope, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createToManyJoinIntermediateForProperty_lastStep_inScope_context_( ClassHandle, CachedSelectors.createToManyJoinIntermediateForProperty_lastStep_inScope_context_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), property, lastStep, inScope, context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static NObjective.RuntimeObject createToOneJoinIntermediateForProperty_lastStep_inScope_context_( NObjective.RuntimeObject property, NObjective.RuntimeObject lastStep, NObjective.RuntimeObject inScope, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createToOneJoinIntermediateForProperty_lastStep_inScope_context_( ClassHandle, CachedSelectors.createToOneJoinIntermediateForProperty_lastStep_inScope_context_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), property, lastStep, inScope, context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject correlationAlias() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.correlationAlias( Handle, CachedSelectors.correlationAlias, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationAlias() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationAlias( Handle, CachedSelectors.destinationAlias, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntity( Handle, CachedSelectors.destinationEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLJoinIntermediate initForRelationship_sourceAlias_destinationAlias_correlationAlias_direct_inScope_( NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourceAlias, NObjective.RuntimeObject destinationAlias, NObjective.RuntimeObject correlationAlias, char direct, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initForRelationship_sourceAlias_destinationAlias_correlationAlias_direct_inScope_( Handle, CachedSelectors.initForRelationship_sourceAlias_destinationAlias_correlationAlias_direct_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ) + sizeof( NObjective.RuntimeObject ), relationship, sourceAlias, destinationAlias, correlationAlias, direct, inScope
			 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLJoinIntermediate( ___result );
		}
		unsafe public bool isDirect() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isDirect( Handle, CachedSelectors.isDirect, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public char joinType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.joinType( Handle, CachedSelectors.joinType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject relationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationship( Handle, CachedSelectors.relationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDestinationAlias_( NObjective.RuntimeObject alias ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationAlias_( Handle, CachedSelectors.setDestinationAlias_, out ___occuredException, sizeof( NObjective.RuntimeObject ), alias );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDirect_( char direct ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDirect_( Handle, CachedSelectors.setDirect_, out ___occuredException, sizeof( char ), direct );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setJoinType_( uint type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setJoinType_( Handle, CachedSelectors.setJoinType_, out ___occuredException, sizeof( uint ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceAlias_( NObjective.RuntimeObject alias ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceAlias_( Handle, CachedSelectors.setSourceAlias_, out ___occuredException, sizeof( NObjective.RuntimeObject ), alias );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sourceAlias() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceAlias( Handle, CachedSelectors.sourceAlias, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceEntity( Handle, CachedSelectors.sourceEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr correlationAlias( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createJoinIntermediatesForKeypath_startEntity_startAlias_forScope_inFetchIntermediate_inContext_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject keypath, NObjective.RuntimeObject startEntity, NObjective.RuntimeObject startAlias, NObjective.RuntimeObject forScope, NObjective.RuntimeObject inFetchIntermediate, NObjective.RuntimeObject inContext
			 );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createManyToManyJoinIntermediateForProperty_direct_lastStep_inScope_context_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject property, char direct, NObjective.RuntimeObject lastStep, NObjective.RuntimeObject inScope, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createToManyJoinIntermediateForProperty_lastStep_inScope_context_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject property, NObjective.RuntimeObject lastStep, NObjective.RuntimeObject inScope, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createToOneJoinIntermediateForProperty_lastStep_inScope_context_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject property, NObjective.RuntimeObject lastStep, NObjective.RuntimeObject inScope, NObjective.RuntimeObject context );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationAlias( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initForRelationship_sourceAlias_destinationAlias_correlationAlias_direct_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship, NObjective.RuntimeObject sourceAlias, NObjective.RuntimeObject destinationAlias, NObjective.RuntimeObject correlationAlias, char direct, NObjective.RuntimeObject inScope
			 );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isDirect( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char joinType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationAlias_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject alias );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDirect_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char direct );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setJoinType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint type );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceAlias_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject alias );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceAlias( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector correlationAlias = "correlationAlias";
			public static readonly Selector createJoinIntermediatesForKeypath_startEntity_startAlias_forScope_inFetchIntermediate_inContext_ = "createJoinIntermediatesForKeypath:startEntity:startAlias:forScope:inFetchIntermediate:inContext:";
			public static readonly Selector createManyToManyJoinIntermediateForProperty_direct_lastStep_inScope_context_ = "createManyToManyJoinIntermediateForProperty:direct:lastStep:inScope:context:";
			public static readonly Selector createToManyJoinIntermediateForProperty_lastStep_inScope_context_ = "createToManyJoinIntermediateForProperty:lastStep:inScope:context:";
			public static readonly Selector createToOneJoinIntermediateForProperty_lastStep_inScope_context_ = "createToOneJoinIntermediateForProperty:lastStep:inScope:context:";
			public static readonly Selector destinationAlias = "destinationAlias";
			public static readonly Selector destinationEntity = "destinationEntity";
			public static readonly Selector initForRelationship_sourceAlias_destinationAlias_correlationAlias_direct_inScope_ = "initForRelationship:sourceAlias:destinationAlias:correlationAlias:direct:inScope:";
			public static readonly Selector isDirect = "isDirect";
			public static readonly Selector joinType = "joinType";
			public static readonly Selector relationship = "relationship";
			public static readonly Selector setDestinationAlias_ = "setDestinationAlias:";
			public static readonly Selector setDirect_ = "setDirect:";
			public static readonly Selector setJoinType_ = "setJoinType:";
			public static readonly Selector setSourceAlias_ = "setSourceAlias:";
			public static readonly Selector sourceAlias = "sourceAlias";
			public static readonly Selector sourceEntity = "sourceEntity";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLExpressionIntermediate ) )]
	public struct NSSQLKeypathExpressionIntermediate : IEquatable<NSSQLKeypathExpressionIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLKeypathExpressionIntermediate;
		public static implicit operator NSSQLExpressionIntermediate( NSSQLKeypathExpressionIntermediate value ) {
			return new NSSQLExpressionIntermediate( value.Handle );
		}
		public static implicit operator NSSQLIntermediate( NSSQLKeypathExpressionIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLKeypathExpressionIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLKeypathExpressionIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLKeypathExpressionIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLKeypathExpressionIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLKeypathExpressionIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLKeypathExpressionIntermediate value1, NSSQLKeypathExpressionIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLKeypathExpressionIntermediate value1, NSSQLKeypathExpressionIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLKeypathExpressionIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLKeypathExpressionIntermediate alloc() {
			return new NSSQLKeypathExpressionIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLLimitIntermediate : IEquatable<NSSQLLimitIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLLimitIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLLimitIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLLimitIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLLimitIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLLimitIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLLimitIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLLimitIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLLimitIntermediate value1, NSSQLLimitIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLLimitIntermediate value1, NSSQLLimitIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLLimitIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLLimitIntermediate alloc() {
			return new NSSQLLimitIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLLimitIntermediate initWithLimit_inScope_( uint limit, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithLimit_inScope_( Handle, CachedSelectors.initWithLimit_inScope_, out ___occuredException, sizeof( uint ) + sizeof( NObjective.RuntimeObject ), limit, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLLimitIntermediate( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithLimit_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint limit, NObjective.RuntimeObject inScope );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithLimit_inScope_ = "initWithLimit:inScope:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLRelationship ) )]
	public struct NSSQLManyToMany : IEquatable<NSSQLManyToMany> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLManyToMany;
		public static implicit operator NSSQLRelationship( NSSQLManyToMany value ) {
			return new NSSQLRelationship( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLManyToMany value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLManyToMany value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLManyToMany value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLManyToMany value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLManyToMany value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLManyToMany?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLManyToMany value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLManyToMany value1, NSSQLManyToMany value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLManyToMany value1, NSSQLManyToMany value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLManyToMany( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLManyToMany alloc() {
			return new NSSQLManyToMany( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject inverseColumnName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.inverseColumnName( Handle, CachedSelectors.inverseColumnName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject inverseManyToMany() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.inverseManyToMany( Handle, CachedSelectors.inverseManyToMany, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public bool isMaster() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isMaster( Handle, CachedSelectors.isMaster, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isReflexive() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isReflexive( Handle, CachedSelectors.isReflexive, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr inverseColumnName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr inverseManyToMany( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isMaster( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isReflexive( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector inverseColumnName = "inverseColumnName";
			public static readonly Selector inverseManyToMany = "inverseManyToMany";
			public static readonly Selector isMaster = "isMaster";
			public static readonly Selector isReflexive = "isReflexive";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapping ) )]
	public struct NSSQLModel : IEquatable<NSSQLModel> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLModel;
		public static implicit operator NSStoreMapping( NSSQLModel value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLModel value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLModel value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLModel value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLModel?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLModel value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLModel value1, NSSQLModel value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLModel value1, NSSQLModel value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLModel( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLModel alloc() {
			return new NSSQLModel( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject configurationName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.configurationName( Handle, CachedSelectors.configurationName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entities() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entities( Handle, CachedSelectors.entities, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityForID_( uint id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityForID_( Handle, CachedSelectors.entityForID_, out ___occuredException, sizeof( uint ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint entityIDForName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityIDForName_( Handle, CachedSelectors.entityIDForName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject entityNamed_( NObjective.RuntimeObject named ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityNamed_( Handle, CachedSelectors.entityNamed_, out ___occuredException, sizeof( NObjective.RuntimeObject ), named );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLModel initWithManagedObjectModel_configurationName_( NObjective.RuntimeObject model, NObjective.RuntimeObject configurationName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithManagedObjectModel_configurationName_( Handle, CachedSelectors.initWithManagedObjectModel_configurationName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), model, configurationName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLModel( ___result );
		}
		unsafe public NSSQLModel initWithManagedObjectModel_configurationName_useBrokenHashing_( NObjective.RuntimeObject model, NObjective.RuntimeObject configurationName, char useBrokenHashing ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithManagedObjectModel_configurationName_useBrokenHashing_( Handle, CachedSelectors.initWithManagedObjectModel_configurationName_useBrokenHashing_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( char ), model, configurationName, useBrokenHashing );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLModel( ___result );
		}
		unsafe public NObjective.RuntimeObject managedObjectModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managedObjectModel( Handle, CachedSelectors.managedObjectModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr configurationName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entities( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityForID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint entityIDForName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityNamed_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject named );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithManagedObjectModel_configurationName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model, NObjective.RuntimeObject configurationName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithManagedObjectModel_configurationName_useBrokenHashing_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model, NObjective.RuntimeObject configurationName, char useBrokenHashing );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managedObjectModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector configurationName = "configurationName";
			public static readonly Selector entities = "entities";
			public static readonly Selector entityForID_ = "entityForID:";
			public static readonly Selector entityIDForName_ = "entityIDForName:";
			public static readonly Selector entityNamed_ = "entityNamed:";
			public static readonly Selector initWithManagedObjectModel_configurationName_ = "initWithManagedObjectModel:configurationName:";
			public static readonly Selector initWithManagedObjectModel_configurationName_useBrokenHashing_ = "initWithManagedObjectModel:configurationName:useBrokenHashing:";
			public static readonly Selector managedObjectModel = "managedObjectModel";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSBasicObjectID64 ) )]
	public struct NSSQLObjectID : IEquatable<NSSQLObjectID> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLObjectID;
		public static implicit operator NSBasicObjectID64( NSSQLObjectID value ) {
			return new NSBasicObjectID64( value.Handle );
		}
		public static implicit operator _NSCoreManagedObjectID( NSSQLObjectID value ) {
			return new _NSCoreManagedObjectID( value.Handle );
		}
		public static implicit operator NSManagedObjectID( NSSQLObjectID value ) {
			return new NSManagedObjectID( value.Handle );
		}
		public static implicit operator NSObject( NSSQLObjectID value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLObjectID value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLObjectID value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLObjectID?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLObjectID value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLObjectID value1, NSSQLObjectID value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLObjectID value1, NSSQLObjectID value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLObjectID( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLObjectID alloc() {
			return new NSSQLObjectID( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLOperation : IEquatable<NSSQLOperation> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLOperation;
		public static implicit operator NSObject( NSSQLOperation value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLOperation value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLOperation value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLOperation?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLOperation value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLOperation value1, NSSQLOperation value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLOperation value1, NSSQLOperation value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLOperation( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLOperation alloc() {
			return new NSSQLOperation( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject adapterOperations() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.adapterOperations( Handle, CachedSelectors.adapterOperations, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void addAdapterOperation_( NObjective.RuntimeObject operation ) {
			RuntimeObject ___occuredException;
			NativeMethods.addAdapterOperation_( Handle, CachedSelectors.addAdapterOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void addDelta_forManyToManyKey_( NObjective.RuntimeObject delta, NObjective.RuntimeObject forManyToManyKey ) {
			RuntimeObject ___occuredException;
			NativeMethods.addDelta_forManyToManyKey_( Handle, CachedSelectors.addDelta_forManyToManyKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), delta, forManyToManyKey );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public uint databaseOperator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.databaseOperator( Handle, CachedSelectors.databaseOperator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject dbSnapshot() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.dbSnapshot( Handle, CachedSelectors.dbSnapshot, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLOperation initWithObject_entity_( NObjective.RuntimeObject @object, NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithObject_entity_( Handle, CachedSelectors.initWithObject_entity_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLOperation( ___result );
		}
		unsafe public NObjective.RuntimeObject manyToManyDeltas() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.manyToManyDeltas( Handle, CachedSelectors.manyToManyDeltas, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject @object() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.@object( Handle, CachedSelectors.@object, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject objectID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectID( Handle, CachedSelectors.objectID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void removeAdapterOperation_( NObjective.RuntimeObject operation ) {
			RuntimeObject ___occuredException;
			NativeMethods.removeAdapterOperation_( Handle, CachedSelectors.removeAdapterOperation_, out ___occuredException, sizeof( NObjective.RuntimeObject ), operation );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject rowForUpdate() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rowForUpdate( Handle, CachedSelectors.rowForUpdate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDatabaseOperator_( uint @operator ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDatabaseOperator_( Handle, CachedSelectors.setDatabaseOperator_, out ___occuredException, sizeof( uint ), @operator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDBSnapshot_( NObjective.RuntimeObject snapshot ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDBSnapshot_( Handle, CachedSelectors.setDBSnapshot_, out ___occuredException, sizeof( NObjective.RuntimeObject ), snapshot );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setRowForUpdate_( NObjective.RuntimeObject update ) {
			RuntimeObject ___occuredException;
			NativeMethods.setRowForUpdate_( Handle, CachedSelectors.setRowForUpdate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), update );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr adapterOperations( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addAdapterOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void addDelta_forManyToManyKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject delta, NObjective.RuntimeObject forManyToManyKey );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint databaseOperator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr dbSnapshot( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithObject_entity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr manyToManyDeltas( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr @object( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void removeAdapterOperation_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject operation );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rowForUpdate( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDatabaseOperator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint @operator );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDBSnapshot_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject snapshot );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setRowForUpdate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject update );
		}
		static internal class CachedSelectors {
			public static readonly Selector adapterOperations = "adapterOperations";
			public static readonly Selector addAdapterOperation_ = "addAdapterOperation:";
			public static readonly Selector addDelta_forManyToManyKey_ = "addDelta:forManyToManyKey:";
			public static readonly Selector databaseOperator = "databaseOperator";
			public static readonly Selector dbSnapshot = "dbSnapshot";
			public static readonly Selector initWithObject_entity_ = "initWithObject:entity:";
			public static readonly Selector manyToManyDeltas = "manyToManyDeltas";
			public static readonly Selector @object = "object";
			public static readonly Selector objectID = "objectID";
			public static readonly Selector removeAdapterOperation_ = "removeAdapterOperation:";
			public static readonly Selector rowForUpdate = "rowForUpdate";
			public static readonly Selector setDatabaseOperator_ = "setDatabaseOperator:";
			public static readonly Selector setDBSnapshot_ = "setDBSnapshot:";
			public static readonly Selector setRowForUpdate_ = "setRowForUpdate:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLColumn ) )]
	public struct NSSQLOptLockKey : IEquatable<NSSQLOptLockKey> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLOptLockKey;
		public static implicit operator NSSQLColumn( NSSQLOptLockKey value ) {
			return new NSSQLColumn( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLOptLockKey value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLOptLockKey value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLOptLockKey value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLOptLockKey value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLOptLockKey value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLOptLockKey?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLOptLockKey value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLOptLockKey value1, NSSQLOptLockKey value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLOptLockKey value1, NSSQLOptLockKey value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLOptLockKey( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLOptLockKey alloc() {
			return new NSSQLOptLockKey( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLOrderIntermediate : IEquatable<NSSQLOrderIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLOrderIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLOrderIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLOrderIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLOrderIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLOrderIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLOrderIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLOrderIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLOrderIntermediate value1, NSSQLOrderIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLOrderIntermediate value1, NSSQLOrderIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLOrderIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLOrderIntermediate alloc() {
			return new NSSQLOrderIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLOrderIntermediate initWithSortDescriptors_inScope_( NObjective.RuntimeObject descriptors, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSortDescriptors_inScope_( Handle, CachedSelectors.initWithSortDescriptors_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), descriptors, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLOrderIntermediate( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSortDescriptors_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject descriptors, NObjective.RuntimeObject inScope );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithSortDescriptors_inScope_ = "initWithSortDescriptors:inScope:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLPredicateAnalyser : IEquatable<NSSQLPredicateAnalyser> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLPredicateAnalyser;
		public static implicit operator NSObject( NSSQLPredicateAnalyser value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLPredicateAnalyser value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLPredicateAnalyser value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLPredicateAnalyser?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLPredicateAnalyser value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLPredicateAnalyser value1, NSSQLPredicateAnalyser value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLPredicateAnalyser value1, NSSQLPredicateAnalyser value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLPredicateAnalyser( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLPredicateAnalyser alloc() {
			return new NSSQLPredicateAnalyser( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject allModifierPredicates() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allModifierPredicates( Handle, CachedSelectors.allModifierPredicates, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject keypaths() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.keypaths( Handle, CachedSelectors.keypaths, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject setExpressions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.setExpressions( Handle, CachedSelectors.setExpressions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject subqueries() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.subqueries( Handle, CachedSelectors.subqueries, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void visitPredicate_( NObjective.RuntimeObject predicate ) {
			RuntimeObject ___occuredException;
			NativeMethods.visitPredicate_( Handle, CachedSelectors.visitPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ), predicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void visitPredicateExpression_( NObjective.RuntimeObject expression ) {
			RuntimeObject ___occuredException;
			NativeMethods.visitPredicateExpression_( Handle, CachedSelectors.visitPredicateExpression_, out ___occuredException, sizeof( NObjective.RuntimeObject ), expression );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void visitPredicateOperator_( NObjective.RuntimeObject @operator ) {
			RuntimeObject ___occuredException;
			NativeMethods.visitPredicateOperator_( Handle, CachedSelectors.visitPredicateOperator_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @operator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr allModifierPredicates( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr keypaths( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr setExpressions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr subqueries( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void visitPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void visitPredicateExpression_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void visitPredicateOperator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @operator );
		}
		static internal class CachedSelectors {
			public static readonly Selector allModifierPredicates = "allModifierPredicates";
			public static readonly Selector keypaths = "keypaths";
			public static readonly Selector setExpressions = "setExpressions";
			public static readonly Selector subqueries = "subqueries";
			public static readonly Selector visitPredicate_ = "visitPredicate:";
			public static readonly Selector visitPredicateExpression_ = "visitPredicateExpression:";
			public static readonly Selector visitPredicateOperator_ = "visitPredicateOperator:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLColumn ) )]
	public struct NSSQLPrimaryKey : IEquatable<NSSQLPrimaryKey> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLPrimaryKey;
		public static implicit operator NSSQLColumn( NSSQLPrimaryKey value ) {
			return new NSSQLColumn( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLPrimaryKey value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLPrimaryKey value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLPrimaryKey value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLPrimaryKey value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLPrimaryKey value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLPrimaryKey?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLPrimaryKey value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLPrimaryKey value1, NSSQLPrimaryKey value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLPrimaryKey value1, NSSQLPrimaryKey value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLPrimaryKey( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLPrimaryKey alloc() {
			return new NSSQLPrimaryKey( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject sqlTypeString() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlTypeString( Handle, CachedSelectors.sqlTypeString, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlTypeString( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector sqlTypeString = "sqlTypeString";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapping ) )]
	public struct NSSQLProperty : IEquatable<NSSQLProperty> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLProperty;
		public static implicit operator NSStoreMapping( NSSQLProperty value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLProperty value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLProperty value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLProperty value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLProperty?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLProperty value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLProperty value1, NSSQLProperty value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLProperty value1, NSSQLProperty value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLProperty( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLProperty alloc() {
			return new NSSQLProperty( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject columnName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.columnName( Handle, CachedSelectors.columnName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLProperty initWithEntity_propertyDescription_( NObjective.RuntimeObject entity, NObjective.RuntimeObject propertyDescription ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_propertyDescription_( Handle, CachedSelectors.initWithEntity_propertyDescription_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, propertyDescription );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLProperty( ___result );
		}
		unsafe public bool isAttribute() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isAttribute( Handle, CachedSelectors.isAttribute, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isColumn() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isColumn( Handle, CachedSelectors.isColumn, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isEntityKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isEntityKey( Handle, CachedSelectors.isEntityKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isForeignEntityKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isForeignEntityKey( Handle, CachedSelectors.isForeignEntityKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isForeignKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isForeignKey( Handle, CachedSelectors.isForeignKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isManyToMany() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isManyToMany( Handle, CachedSelectors.isManyToMany, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isOptLockKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isOptLockKey( Handle, CachedSelectors.isOptLockKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isPrimaryKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isPrimaryKey( Handle, CachedSelectors.isPrimaryKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isRelationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isRelationship( Handle, CachedSelectors.isRelationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isToMany() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isToMany( Handle, CachedSelectors.isToMany, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isToOne() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isToOne( Handle, CachedSelectors.isToOne, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject name() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.name( Handle, CachedSelectors.name, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject propertyDescription() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertyDescription( Handle, CachedSelectors.propertyDescription, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint propertyType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.propertyType( Handle, CachedSelectors.propertyType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint slot() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.slot( Handle, CachedSelectors.slot, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr columnName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_propertyDescription_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject propertyDescription );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isAttribute( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isColumn( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isEntityKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isForeignEntityKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isForeignKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isManyToMany( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isOptLockKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isPrimaryKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isRelationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isToMany( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isToOne( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr name( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr propertyDescription( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint propertyType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint slot( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector columnName = "columnName";
			public static readonly Selector entity = "entity";
			public static readonly Selector initWithEntity_propertyDescription_ = "initWithEntity:propertyDescription:";
			public static readonly Selector isAttribute = "isAttribute";
			public static readonly Selector isColumn = "isColumn";
			public static readonly Selector isEntityKey = "isEntityKey";
			public static readonly Selector isForeignEntityKey = "isForeignEntityKey";
			public static readonly Selector isForeignKey = "isForeignKey";
			public static readonly Selector isManyToMany = "isManyToMany";
			public static readonly Selector isOptLockKey = "isOptLockKey";
			public static readonly Selector isPrimaryKey = "isPrimaryKey";
			public static readonly Selector isRelationship = "isRelationship";
			public static readonly Selector isToMany = "isToMany";
			public static readonly Selector isToOne = "isToOne";
			public static readonly Selector name = "name";
			public static readonly Selector propertyDescription = "propertyDescription";
			public static readonly Selector propertyType = "propertyType";
			public static readonly Selector slot = "slot";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLProperty ) )]
	public struct NSSQLRelationship : IEquatable<NSSQLRelationship> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLRelationship;
		public static implicit operator NSSQLProperty( NSSQLRelationship value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLRelationship value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLRelationship value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLRelationship value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLRelationship value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLRelationship?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLRelationship value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLRelationship value1, NSSQLRelationship value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLRelationship value1, NSSQLRelationship value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLRelationship( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLRelationship alloc() {
			return new NSSQLRelationship( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject correlationTableName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.correlationTableName( Handle, CachedSelectors.correlationTableName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationEntity( Handle, CachedSelectors.destinationEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject foreignKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKey( Handle, CachedSelectors.foreignKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject inverseRelationship() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.inverseRelationship( Handle, CachedSelectors.inverseRelationship, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject relationshipDescription() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.relationshipDescription( Handle, CachedSelectors.relationshipDescription, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceEntity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceEntity( Handle, CachedSelectors.sourceEntity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr correlationTableName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr inverseRelationship( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr relationshipDescription( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceEntity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector correlationTableName = "correlationTableName";
			public static readonly Selector destinationEntity = "destinationEntity";
			public static readonly Selector foreignKey = "foreignKey";
			public static readonly Selector inverseRelationship = "inverseRelationship";
			public static readonly Selector relationshipDescription = "relationshipDescription";
			public static readonly Selector sourceEntity = "sourceEntity";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSExternalRefCountedData ) )]
	public struct NSSQLRow : IEquatable<NSSQLRow> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLRow;
		public static implicit operator NSExternalRefCountedData( NSSQLRow value ) {
			return new NSExternalRefCountedData( value.Handle );
		}
		public static implicit operator NSObject( NSSQLRow value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLRow value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLRow value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLRow?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLRow value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLRow value1, NSSQLRow value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLRow value1, NSSQLRow value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLRow( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLRow alloc() {
			return new NSSQLRow( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject allocForSQLEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allocForSQLEntity_( ClassHandle, CachedSelectors.allocForSQLEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static uint newBatchRowAllocation_count_forSQLEntity_withOwnedObjectIDs_andTimestamp_( System.IntPtr allocation, uint count, NObjective.RuntimeObject forSQLEntity, System.IntPtr withOwnedObjectIDs, double andTimestamp ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newBatchRowAllocation_count_forSQLEntity_withOwnedObjectIDs_andTimestamp_( ClassHandle, CachedSelectors.newBatchRowAllocation_count_forSQLEntity_withOwnedObjectIDs_andTimestamp_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( uint ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ) + sizeof( double ), allocation, count, forSQLEntity, withOwnedObjectIDs, andTimestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject attributeValueForSlot_( uint slot ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.attributeValueForSlot_( Handle, CachedSelectors.attributeValueForSlot_, out ___occuredException, sizeof( uint ), slot );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public uint entityID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityID( Handle, CachedSelectors.entityID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public uint foreignEntityKeyForSlot_( uint slot ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignEntityKeyForSlot_( Handle, CachedSelectors.foreignEntityKeyForSlot_, out ___occuredException, sizeof( uint ), slot );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public long foreignKeyForSlot_( uint slot ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignKeyForSlot_( Handle, CachedSelectors.foreignKeyForSlot_, out ___occuredException, sizeof( uint ), slot );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NSSQLRow initWithSQLEntity_objectID_( NObjective.RuntimeObject entity, NObjective.RuntimeObject objectID ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSQLEntity_objectID_( Handle, CachedSelectors.initWithSQLEntity_objectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, objectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLRow( ___result );
		}
		unsafe public NSSQLRow initWithSQLEntity_ownedObjectID_andTimestamp_( NObjective.RuntimeObject entity, NObjective.RuntimeObject ownedObjectID, double andTimestamp ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSQLEntity_ownedObjectID_andTimestamp_( Handle, CachedSelectors.initWithSQLEntity_ownedObjectID_andTimestamp_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( double ), entity, ownedObjectID, andTimestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLRow( ___result );
		}
		unsafe public System.IntPtr knownKeyValuesPointer() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.knownKeyValuesPointer( Handle, CachedSelectors.knownKeyValuesPointer, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject newObjectIDForToOne_( NObjective.RuntimeObject one ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.newObjectIDForToOne_( Handle, CachedSelectors.newObjectIDForToOne_, out ___occuredException, sizeof( NObjective.RuntimeObject ), one );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject objectID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectID( Handle, CachedSelectors.objectID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public long optLock() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.optLock( Handle, CachedSelectors.optLock, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public long pk64() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.pk64( Handle, CachedSelectors.pk64, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void setAttributeSlotNoRetain_withObject_( uint retain, NObjective.RuntimeObject withObject ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAttributeSlotNoRetain_withObject_( Handle, CachedSelectors.setAttributeSlotNoRetain_withObject_, out ___occuredException, sizeof( uint ) + sizeof( NObjective.RuntimeObject ), retain, withObject );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setForeignEntityKeySlot_unsigned_( uint slot, uint unsigned ) {
			RuntimeObject ___occuredException;
			NativeMethods.setForeignEntityKeySlot_unsigned_( Handle, CachedSelectors.setForeignEntityKeySlot_unsigned_, out ___occuredException, sizeof( uint ) + sizeof( uint ), slot, unsigned );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setForeignKeySlot_int64_( uint slot, long int64 ) {
			RuntimeObject ___occuredException;
			NativeMethods.setForeignKeySlot_int64_( Handle, CachedSelectors.setForeignKeySlot_int64_, out ___occuredException, sizeof( uint ) + sizeof( long ), slot, int64 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			NativeMethods.setObjectID_( Handle, CachedSelectors.setObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setOptLock_( long @lock ) {
			RuntimeObject ___occuredException;
			NativeMethods.setOptLock_( Handle, CachedSelectors.setOptLock_, out ___occuredException, sizeof( long ), @lock );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr allocForSQLEntity_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr attributeValueForSlot_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint slot );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint entityID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint foreignEntityKeyForSlot_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint slot );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long foreignKeyForSlot_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint slot );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSQLEntity_objectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject objectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSQLEntity_ownedObjectID_andTimestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject ownedObjectID, double andTimestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr knownKeyValuesPointer( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint newBatchRowAllocation_count_forSQLEntity_withOwnedObjectIDs_andTimestamp_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr allocation, uint count, NObjective.RuntimeObject forSQLEntity, System.IntPtr withOwnedObjectIDs, double andTimestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr newObjectIDForToOne_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject one );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long optLock( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern long pk64( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAttributeSlotNoRetain_withObject_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint retain, NObjective.RuntimeObject withObject );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setForeignEntityKeySlot_unsigned_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint slot, uint unsigned );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setForeignKeySlot_int64_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, uint slot, long int64 );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setOptLock_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, long @lock );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
		}
		static internal class CachedSelectors {
			public static readonly Selector allocForSQLEntity_ = "allocForSQLEntity:";
			public static readonly Selector attributeValueForSlot_ = "attributeValueForSlot:";
			public static readonly Selector entity = "entity";
			public static readonly Selector entityID = "entityID";
			public static readonly Selector foreignEntityKeyForSlot_ = "foreignEntityKeyForSlot:";
			public static readonly Selector foreignKeyForSlot_ = "foreignKeyForSlot:";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithSQLEntity_objectID_ = "initWithSQLEntity:objectID:";
			public static readonly Selector initWithSQLEntity_ownedObjectID_andTimestamp_ = "initWithSQLEntity:ownedObjectID:andTimestamp:";
			public static readonly Selector knownKeyValuesPointer = "knownKeyValuesPointer";
			public static readonly Selector newBatchRowAllocation_count_forSQLEntity_withOwnedObjectIDs_andTimestamp_ = "newBatchRowAllocation:count:forSQLEntity:withOwnedObjectIDs:andTimestamp:";
			public static readonly Selector newObjectIDForToOne_ = "newObjectIDForToOne:";
			public static readonly Selector objectID = "objectID";
			public static readonly Selector optLock = "optLock";
			public static readonly Selector pk64 = "pk64";
			public static readonly Selector setAttributeSlotNoRetain_withObject_ = "setAttributeSlotNoRetain:withObject:";
			public static readonly Selector setForeignEntityKeySlot_unsigned_ = "setForeignEntityKeySlot:unsigned:";
			public static readonly Selector setForeignKeySlot_int64_ = "setForeignKeySlot:int64:";
			public static readonly Selector setObjectID_ = "setObjectID:";
			public static readonly Selector setOptLock_ = "setOptLock:";
			public static readonly Selector valueForKey_ = "valueForKey:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStoreCache ) )]
	public struct NSSQLRowCache : IEquatable<NSSQLRowCache> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLRowCache;
		public static implicit operator NSPersistentStoreCache( NSSQLRowCache value ) {
			return new NSPersistentStoreCache( value.Handle );
		}
		public static implicit operator NSObject( NSSQLRowCache value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLRowCache value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLRowCache value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLRowCache?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLRowCache value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLRowCache value1, NSSQLRowCache value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLRowCache value1, NSSQLRowCache value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLRowCache( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLRowCache alloc() {
			return new NSSQLRowCache( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject adapter() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.adapter( Handle, CachedSelectors.adapter, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void forgetRowForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			NativeMethods.forgetRowForObjectID_( Handle, CachedSelectors.forgetRowForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSSQLRowCache initWithSQLCore_( NObjective.RuntimeObject core ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithSQLCore_( Handle, CachedSelectors.initWithSQLCore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), core );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLRowCache( ___result );
		}
		unsafe public void registerRow_forObjectID_( NObjective.RuntimeObject row, NObjective.RuntimeObject forObjectID ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerRow_forObjectID_( Handle, CachedSelectors.registerRow_forObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), row, forObjectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void registerSnapshots_( NObjective.RuntimeObject snapshots ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerSnapshots_( Handle, CachedSelectors.registerSnapshots_, out ___occuredException, sizeof( NObjective.RuntimeObject ), snapshots );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void registerToMany_forSourceObjectID_relationshipName_andTimestamp_( NObjective.RuntimeObject many, NObjective.RuntimeObject forSourceObjectID, NObjective.RuntimeObject relationshipName, double andTimestamp ) {
			RuntimeObject ___occuredException;
			NativeMethods.registerToMany_forSourceObjectID_relationshipName_andTimestamp_( Handle, CachedSelectors.registerToMany_forSourceObjectID_relationshipName_andTimestamp_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( double ), many, forSourceObjectID, relationshipName, andTimestamp );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject rowForObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rowForObjectID_( Handle, CachedSelectors.rowForObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject rowForObjectID_after_( NObjective.RuntimeObject id, double after ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.rowForObjectID_after_( Handle, CachedSelectors.rowForObjectID_after_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( double ), id, after );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject toManyForSourceObjectID_relationshipName_after_( NObjective.RuntimeObject id, NObjective.RuntimeObject relationshipName, double after ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.toManyForSourceObjectID_relationshipName_after_( Handle, CachedSelectors.toManyForSourceObjectID_relationshipName_after_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( double ), id, relationshipName, after );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr adapter( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void forgetRowForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithSQLCore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject core );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerRow_forObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject row, NObjective.RuntimeObject forObjectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerSnapshots_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject snapshots );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void registerToMany_forSourceObjectID_relationshipName_andTimestamp_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject many, NObjective.RuntimeObject forSourceObjectID, NObjective.RuntimeObject relationshipName, double andTimestamp );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rowForObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr rowForObjectID_after_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, double after );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr toManyForSourceObjectID_relationshipName_after_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id, NObjective.RuntimeObject relationshipName, double after );
		}
		static internal class CachedSelectors {
			public static readonly Selector adapter = "adapter";
			public static readonly Selector forgetRowForObjectID_ = "forgetRowForObjectID:";
			public static readonly Selector initWithSQLCore_ = "initWithSQLCore:";
			public static readonly Selector registerRow_forObjectID_ = "registerRow:forObjectID:";
			public static readonly Selector registerSnapshots_ = "registerSnapshots:";
			public static readonly Selector registerToMany_forSourceObjectID_relationshipName_andTimestamp_ = "registerToMany:forSourceObjectID:relationshipName:andTimestamp:";
			public static readonly Selector rowForObjectID_ = "rowForObjectID:";
			public static readonly Selector rowForObjectID_after_ = "rowForObjectID:after:";
			public static readonly Selector toManyForSourceObjectID_relationshipName_after_ = "toManyForSourceObjectID:relationshipName:after:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLSelectIntermediate : IEquatable<NSSQLSelectIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLSelectIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLSelectIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLSelectIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLSelectIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLSelectIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLSelectIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLSelectIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLSelectIntermediate value1, NSSQLSelectIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLSelectIntermediate value1, NSSQLSelectIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLSelectIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLSelectIntermediate alloc() {
			return new NSSQLSelectIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLSelectIntermediate initWithEntity_alias_fetchColumns_inScope_( NObjective.RuntimeObject entity, NObjective.RuntimeObject alias, NObjective.RuntimeObject fetchColumns, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_alias_fetchColumns_inScope_( Handle, CachedSelectors.initWithEntity_alias_fetchColumns_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, alias, fetchColumns, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLSelectIntermediate( ___result );
		}
		unsafe public void setColumnAlias_( NObjective.RuntimeObject alias ) {
			RuntimeObject ___occuredException;
			NativeMethods.setColumnAlias_( Handle, CachedSelectors.setColumnAlias_, out ___occuredException, sizeof( NObjective.RuntimeObject ), alias );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setFetchColumns_( NObjective.RuntimeObject columns ) {
			RuntimeObject ___occuredException;
			NativeMethods.setFetchColumns_( Handle, CachedSelectors.setFetchColumns_, out ___occuredException, sizeof( NObjective.RuntimeObject ), columns );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setFetchEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			NativeMethods.setFetchEntity_( Handle, CachedSelectors.setFetchEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setUseDistinct_( char distinct ) {
			RuntimeObject ___occuredException;
			NativeMethods.setUseDistinct_( Handle, CachedSelectors.setUseDistinct_, out ___occuredException, sizeof( char ), distinct );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_alias_fetchColumns_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject alias, NObjective.RuntimeObject fetchColumns, NObjective.RuntimeObject inScope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setColumnAlias_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject alias );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setFetchColumns_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject columns );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setFetchEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setUseDistinct_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char distinct );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithEntity_alias_fetchColumns_inScope_ = "initWithEntity:alias:fetchColumns:inScope:";
			public static readonly Selector setColumnAlias_ = "setColumnAlias:";
			public static readonly Selector setFetchColumns_ = "setFetchColumns:";
			public static readonly Selector setFetchEntity_ = "setFetchEntity:";
			public static readonly Selector setUseDistinct_ = "setUseDistinct:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLWhereIntermediate ) )]
	public struct NSSQLSimpleWhereIntermediate : IEquatable<NSSQLSimpleWhereIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLSimpleWhereIntermediate;
		public static implicit operator NSSQLWhereIntermediate( NSSQLSimpleWhereIntermediate value ) {
			return new NSSQLWhereIntermediate( value.Handle );
		}
		public static implicit operator NSSQLIntermediate( NSSQLSimpleWhereIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLSimpleWhereIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLSimpleWhereIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLSimpleWhereIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLSimpleWhereIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLSimpleWhereIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLSimpleWhereIntermediate value1, NSSQLSimpleWhereIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLSimpleWhereIntermediate value1, NSSQLSimpleWhereIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLSimpleWhereIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLSimpleWhereIntermediate alloc() {
			return new NSSQLSimpleWhereIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLStatement : IEquatable<NSSQLStatement> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLStatement;
		public static implicit operator NSObject( NSSQLStatement value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLStatement value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLStatement value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLStatement?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLStatement value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLStatement value1, NSSQLStatement value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLStatement value1, NSSQLStatement value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLStatement( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLStatement alloc() {
			return new NSSQLStatement( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public uint addBindVariable_( NObjective.RuntimeObject variable ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.addBindVariable_( Handle, CachedSelectors.addBindVariable_, out ___occuredException, sizeof( NObjective.RuntimeObject ), variable );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public NObjective.RuntimeObject bindVariables() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.bindVariables( Handle, CachedSelectors.bindVariables, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void clearCaches() {
			RuntimeObject ___occuredException;
			NativeMethods.clearCaches( Handle, CachedSelectors.clearCaches, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLStatement initWithEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_( Handle, CachedSelectors.initWithEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLStatement( ___result );
		}
		unsafe public NSSQLStatement initWithEntity_sqlString_( NObjective.RuntimeObject entity, NObjective.RuntimeObject sqlString ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_sqlString_( Handle, CachedSelectors.initWithEntity_sqlString_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, sqlString );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLStatement( ___result );
		}
		unsafe public bool isImpossibleCondition() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isImpossibleCondition( Handle, CachedSelectors.isImpossibleCondition, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void removeAllBindVariables() {
			RuntimeObject ___occuredException;
			NativeMethods.removeAllBindVariables( Handle, CachedSelectors.removeAllBindVariables, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setBindVariables_( NObjective.RuntimeObject variables ) {
			RuntimeObject ___occuredException;
			NativeMethods.setBindVariables_( Handle, CachedSelectors.setBindVariables_, out ___occuredException, sizeof( NObjective.RuntimeObject ), variables );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setImpossibleCondition_( char condition ) {
			RuntimeObject ___occuredException;
			NativeMethods.setImpossibleCondition_( Handle, CachedSelectors.setImpossibleCondition_, out ___occuredException, sizeof( char ), condition );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSQLString_( NObjective.RuntimeObject @string ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSQLString_( Handle, CachedSelectors.setSQLString_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @string );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sqlString() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sqlString( Handle, CachedSelectors.sqlString, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint addBindVariable_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject variable );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr bindVariables( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void clearCaches( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_sqlString_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject sqlString );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isImpossibleCondition( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void removeAllBindVariables( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setBindVariables_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject variables );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setImpossibleCondition_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, char condition );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSQLString_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @string );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sqlString( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector addBindVariable_ = "addBindVariable:";
			public static readonly Selector bindVariables = "bindVariables";
			public static readonly Selector clearCaches = "clearCaches";
			public static readonly Selector entity = "entity";
			public static readonly Selector initWithEntity_ = "initWithEntity:";
			public static readonly Selector initWithEntity_sqlString_ = "initWithEntity:sqlString:";
			public static readonly Selector isImpossibleCondition = "isImpossibleCondition";
			public static readonly Selector removeAllBindVariables = "removeAllBindVariables";
			public static readonly Selector setBindVariables_ = "setBindVariables:";
			public static readonly Selector setImpossibleCondition_ = "setImpossibleCondition:";
			public static readonly Selector setSQLString_ = "setSQLString:";
			public static readonly Selector sqlString = "sqlString";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSSQLStoreMappingGenerator : IEquatable<NSSQLStoreMappingGenerator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLStoreMappingGenerator;
		public static implicit operator NSObject( NSSQLStoreMappingGenerator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLStoreMappingGenerator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLStoreMappingGenerator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLStoreMappingGenerator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLStoreMappingGenerator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLStoreMappingGenerator value1, NSSQLStoreMappingGenerator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLStoreMappingGenerator value1, NSSQLStoreMappingGenerator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLStoreMappingGenerator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLStoreMappingGenerator alloc() {
			return new NSSQLStoreMappingGenerator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject defaultMappingGenerator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.defaultMappingGenerator( ClassHandle, CachedSelectors.defaultMappingGenerator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static void invalidate() {
			RuntimeObject ___occuredException;
			NativeMethods.invalidate( ClassHandle, CachedSelectors.invalidate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject generatePropertyName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generatePropertyName_( Handle, CachedSelectors.generatePropertyName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject generateTableName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.generateTableName_( Handle, CachedSelectors.generateTableName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject uniqueNameWithBase_( NObjective.RuntimeObject @base ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.uniqueNameWithBase_( Handle, CachedSelectors.uniqueNameWithBase_, out ___occuredException, sizeof( NObjective.RuntimeObject ), @base );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr defaultMappingGenerator( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generatePropertyName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr generateTableName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void invalidate( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr uniqueNameWithBase_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @base );
		}
		static internal class CachedSelectors {
			public static readonly Selector defaultMappingGenerator = "defaultMappingGenerator";
			public static readonly Selector generatePropertyName_ = "generatePropertyName:";
			public static readonly Selector generateTableName_ = "generateTableName:";
			public static readonly Selector invalidate = "invalidate";
			public static readonly Selector uniqueNameWithBase_ = "uniqueNameWithBase:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLExpressionIntermediate ) )]
	public struct NSSQLSubqueryExpressionIntermediate : IEquatable<NSSQLSubqueryExpressionIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLSubqueryExpressionIntermediate;
		public static implicit operator NSSQLExpressionIntermediate( NSSQLSubqueryExpressionIntermediate value ) {
			return new NSSQLExpressionIntermediate( value.Handle );
		}
		public static implicit operator NSSQLIntermediate( NSSQLSubqueryExpressionIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLSubqueryExpressionIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLSubqueryExpressionIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLSubqueryExpressionIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLSubqueryExpressionIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLSubqueryExpressionIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLSubqueryExpressionIntermediate value1, NSSQLSubqueryExpressionIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLSubqueryExpressionIntermediate value1, NSSQLSubqueryExpressionIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLSubqueryExpressionIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLSubqueryExpressionIntermediate alloc() {
			return new NSSQLSubqueryExpressionIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLSubqueryExpressionIntermediate initWithExpression_trailingKeypath_inScope_( NObjective.RuntimeObject expression, NObjective.RuntimeObject trailingKeypath, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithExpression_trailingKeypath_inScope_( Handle, CachedSelectors.initWithExpression_trailingKeypath_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), expression, trailingKeypath, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLSubqueryExpressionIntermediate( ___result );
		}
		unsafe public void selectDistinct() {
			RuntimeObject ___occuredException;
			NativeMethods.selectDistinct( Handle, CachedSelectors.selectDistinct, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithExpression_trailingKeypath_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject expression, NObjective.RuntimeObject trailingKeypath, NObjective.RuntimeObject inScope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void selectDistinct( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithExpression_trailingKeypath_inScope_ = "initWithExpression:trailingKeypath:inScope:";
			public static readonly Selector selectDistinct = "selectDistinct";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLRelationship ) )]
	public struct NSSQLToMany : IEquatable<NSSQLToMany> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLToMany;
		public static implicit operator NSSQLRelationship( NSSQLToMany value ) {
			return new NSSQLRelationship( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLToMany value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLToMany value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLToMany value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLToMany value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLToMany value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLToMany?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLToMany value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLToMany value1, NSSQLToMany value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLToMany value1, NSSQLToMany value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLToMany( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLToMany alloc() {
			return new NSSQLToMany( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject inverseToOne() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.inverseToOne( Handle, CachedSelectors.inverseToOne, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr inverseToOne( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector inverseToOne = "inverseToOne";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLRelationship ) )]
	public struct NSSQLToOne : IEquatable<NSSQLToOne> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLToOne;
		public static implicit operator NSSQLRelationship( NSSQLToOne value ) {
			return new NSSQLRelationship( value.Handle );
		}
		public static implicit operator NSSQLProperty( NSSQLToOne value ) {
			return new NSSQLProperty( value.Handle );
		}
		public static implicit operator NSStoreMapping( NSSQLToOne value ) {
			return new NSStoreMapping( value.Handle );
		}
		public static implicit operator NSObject( NSSQLToOne value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLToOne value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLToOne value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLToOne?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLToOne value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLToOne value1, NSSQLToOne value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLToOne value1, NSSQLToOne value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLToOne( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLToOne alloc() {
			return new NSSQLToOne( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject foreignEntityKey() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.foreignEntityKey( Handle, CachedSelectors.foreignEntityKey, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSSQLToOne initWithEntity_inverseToMany_( NObjective.RuntimeObject entity, NObjective.RuntimeObject inverseToMany ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_inverseToMany_( Handle, CachedSelectors.initWithEntity_inverseToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, inverseToMany );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLToOne( ___result );
		}
		unsafe public NSSQLToOne initWithEntity_propertyDescription_virtualForToMany_( NObjective.RuntimeObject entity, NObjective.RuntimeObject propertyDescription, NObjective.RuntimeObject virtualForToMany ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_propertyDescription_virtualForToMany_( Handle, CachedSelectors.initWithEntity_propertyDescription_virtualForToMany_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, propertyDescription, virtualForToMany );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLToOne( ___result );
		}
		unsafe public bool isOptional() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isOptional( Handle, CachedSelectors.isOptional, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public bool isVirtual() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.isVirtual( Handle, CachedSelectors.isVirtual, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr foreignEntityKey( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_inverseToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject inverseToMany );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_propertyDescription_virtualForToMany_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject propertyDescription, NObjective.RuntimeObject virtualForToMany );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isOptional( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern bool isVirtual( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector foreignEntityKey = "foreignEntityKey";
			public static readonly Selector initWithEntity_inverseToMany_ = "initWithEntity:inverseToMany:";
			public static readonly Selector initWithEntity_propertyDescription_virtualForToMany_ = "initWithEntity:propertyDescription:virtualForToMany:";
			public static readonly Selector isOptional = "isOptional";
			public static readonly Selector isVirtual = "isVirtual";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSSQLIntermediate ) )]
	public struct NSSQLWhereIntermediate : IEquatable<NSSQLWhereIntermediate> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSSQLWhereIntermediate;
		public static implicit operator NSSQLIntermediate( NSSQLWhereIntermediate value ) {
			return new NSSQLIntermediate( value.Handle );
		}
		public static implicit operator NSObject( NSSQLWhereIntermediate value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSSQLWhereIntermediate value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSSQLWhereIntermediate value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSSQLWhereIntermediate?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSSQLWhereIntermediate value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSSQLWhereIntermediate value1, NSSQLWhereIntermediate value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSSQLWhereIntermediate value1, NSSQLWhereIntermediate value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSSQLWhereIntermediate( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSSQLWhereIntermediate alloc() {
			return new NSSQLWhereIntermediate( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSSQLWhereIntermediate initWithPredicate_inScope_( NObjective.RuntimeObject predicate, NObjective.RuntimeObject inScope ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithPredicate_inScope_( Handle, CachedSelectors.initWithPredicate_inScope_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), predicate, inScope );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSSQLWhereIntermediate( ___result );
		}
		unsafe public NObjective.RuntimeObject predicate() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.predicate( Handle, CachedSelectors.predicate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithPredicate_inScope_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject predicate, NObjective.RuntimeObject inScope );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr predicate( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithPredicate_inScope_ = "initWithPredicate:inScope:";
			public static readonly Selector predicate = "predicate";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSStoreMapNode : IEquatable<NSStoreMapNode> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSStoreMapNode;
		public static implicit operator NSObject( NSStoreMapNode value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSStoreMapNode value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSStoreMapNode value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSStoreMapNode?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSStoreMapNode value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSStoreMapNode value1, NSStoreMapNode value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSStoreMapNode value1, NSStoreMapNode value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSStoreMapNode( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSStoreMapNode alloc() {
			return new NSStoreMapNode( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static void initialize() {
			RuntimeObject ___occuredException;
			NativeMethods.initialize( ClassHandle, CachedSelectors.initialize, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject configurationName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.configurationName( Handle, CachedSelectors.configurationName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationsForRelationship_( NObjective.RuntimeObject relationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationsForRelationship_( Handle, CachedSelectors.destinationsForRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ), relationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void encodeWithCoder_( NSCoder coder ) {
			RuntimeObject ___occuredException;
			NativeMethods.encodeWithCoder_( Handle, CachedSelectors.encodeWithCoder_, out ___occuredException, sizeof( NSCoder ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSStoreMapNode initWithCoder_( NObjective.RuntimeObject coder ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithCoder_( Handle, CachedSelectors.initWithCoder_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coder );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSStoreMapNode( ___result );
		}
		unsafe public NSStoreMapNode initWithObjectID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithObjectID_( Handle, CachedSelectors.initWithObjectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSStoreMapNode( ___result );
		}
		unsafe public NObjective.RuntimeObject key() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.key( Handle, CachedSelectors.key, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public System.IntPtr knownKeyValuesPointer() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.knownKeyValuesPointer( Handle, CachedSelectors.knownKeyValuesPointer, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject objectID() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.objectID( Handle, CachedSelectors.objectID, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDestinations_forRelationship_( NObjective.RuntimeObject destinations, NObjective.RuntimeObject forRelationship ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinations_forRelationship_( Handle, CachedSelectors.setDestinations_forRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), destinations, forRelationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr configurationName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationsForRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void encodeWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NSCoder coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void initialize( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithCoder_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coder );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithObjectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr key( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern System.IntPtr knownKeyValuesPointer( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr objectID( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinations_forRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject destinations, NObjective.RuntimeObject forRelationship );
		}
		static internal class CachedSelectors {
			public static readonly Selector configurationName = "configurationName";
			public static readonly Selector destinationsForRelationship_ = "destinationsForRelationship:";
			public static readonly Selector encodeWithCoder_ = "encodeWithCoder:";
			public static readonly Selector entity = "entity";
			public static readonly Selector initialize = "initialize";
			public static readonly Selector initWithCoder_ = "initWithCoder:";
			public static readonly Selector initWithObjectID_ = "initWithObjectID:";
			public static readonly Selector key = "key";
			public static readonly Selector knownKeyValuesPointer = "knownKeyValuesPointer";
			public static readonly Selector objectID = "objectID";
			public static readonly Selector setDestinations_forRelationship_ = "setDestinations:forRelationship:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSStoreMapping : IEquatable<NSStoreMapping> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSStoreMapping;
		public static implicit operator NSObject( NSStoreMapping value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSStoreMapping value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSStoreMapping value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSStoreMapping?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSStoreMapping value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSStoreMapping value1, NSStoreMapping value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSStoreMapping value1, NSStoreMapping value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSStoreMapping( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSStoreMapping alloc() {
			return new NSStoreMapping( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject externalName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalName( Handle, CachedSelectors.externalName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSStoreMapping initWithExternalName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithExternalName_( Handle, CachedSelectors.initWithExternalName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSStoreMapping( ___result );
		}
		unsafe public void setExternalName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			NativeMethods.setExternalName_( Handle, CachedSelectors.setExternalName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr externalName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithExternalName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setExternalName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
		}
		static internal class CachedSelectors {
			public static readonly Selector externalName = "externalName";
			public static readonly Selector initWithExternalName_ = "initWithExternalName:";
			public static readonly Selector setExternalName_ = "setExternalName:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSStoreMappingGenerator : IEquatable<NSStoreMappingGenerator> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSStoreMappingGenerator;
		public static implicit operator NSObject( NSStoreMappingGenerator value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSStoreMappingGenerator value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSStoreMappingGenerator value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSStoreMappingGenerator?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSStoreMappingGenerator value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSStoreMappingGenerator value1, NSStoreMappingGenerator value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSStoreMappingGenerator value1, NSStoreMappingGenerator value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSStoreMappingGenerator( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSStoreMappingGenerator alloc() {
			return new NSStoreMappingGenerator( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static NObjective.RuntimeObject defaultMappingGenerator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.defaultMappingGenerator( ClassHandle, CachedSelectors.defaultMappingGenerator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static void invalidate() {
			RuntimeObject ___occuredException;
			NativeMethods.invalidate( ClassHandle, CachedSelectors.invalidate, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject externalNameForEntityName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalNameForEntityName_( Handle, CachedSelectors.externalNameForEntityName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject externalNameForPropertyName_( NObjective.RuntimeObject name ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalNameForPropertyName_( Handle, CachedSelectors.externalNameForPropertyName_, out ___occuredException, sizeof( NObjective.RuntimeObject ), name );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject internalNameForEntityName_version_( NObjective.RuntimeObject name, int version ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.internalNameForEntityName_version_( Handle, CachedSelectors.internalNameForEntityName_version_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( int ), name, version );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject internalNameForPropertyName_version_( NObjective.RuntimeObject name, int version ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.internalNameForPropertyName_version_( Handle, CachedSelectors.internalNameForPropertyName_version_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( int ), name, version );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject joinsForRelationship_( NObjective.RuntimeObject relationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.joinsForRelationship_( Handle, CachedSelectors.joinsForRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ), relationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingForAttribute_forConfigurationWithName_( NObjective.RuntimeObject attribute, NObjective.RuntimeObject forConfigurationWithName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingForAttribute_forConfigurationWithName_( Handle, CachedSelectors.mappingForAttribute_forConfigurationWithName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), attribute, forConfigurationWithName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingForEntity_forConfigurationWithName_( NObjective.RuntimeObject entity, NObjective.RuntimeObject forConfigurationWithName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingForEntity_forConfigurationWithName_( Handle, CachedSelectors.mappingForEntity_forConfigurationWithName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, forConfigurationWithName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingForRelationship_forConfigurationWithName_( NObjective.RuntimeObject relationship, NObjective.RuntimeObject forConfigurationWithName ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingForRelationship_forConfigurationWithName_( Handle, CachedSelectors.mappingForRelationship_forConfigurationWithName_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), relationship, forConfigurationWithName );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingsForConfigurationWithName_inModel_( NObjective.RuntimeObject name, NObjective.RuntimeObject inModel ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingsForConfigurationWithName_inModel_( Handle, CachedSelectors.mappingsForConfigurationWithName_inModel_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), name, inModel );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject primaryKeyForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.primaryKeyForEntity_( Handle, CachedSelectors.primaryKeyForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr defaultMappingGenerator( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr externalNameForEntityName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr externalNameForPropertyName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr internalNameForEntityName_version_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, int version );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr internalNameForPropertyName_version_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, int version );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void invalidate( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr joinsForRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingForAttribute_forConfigurationWithName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject attribute, NObjective.RuntimeObject forConfigurationWithName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingForEntity_forConfigurationWithName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject forConfigurationWithName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingForRelationship_forConfigurationWithName_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship, NObjective.RuntimeObject forConfigurationWithName );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingsForConfigurationWithName_inModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject name, NObjective.RuntimeObject inModel );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr primaryKeyForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
		}
		static internal class CachedSelectors {
			public static readonly Selector defaultMappingGenerator = "defaultMappingGenerator";
			public static readonly Selector externalNameForEntityName_ = "externalNameForEntityName:";
			public static readonly Selector externalNameForPropertyName_ = "externalNameForPropertyName:";
			public static readonly Selector internalNameForEntityName_version_ = "internalNameForEntityName:version:";
			public static readonly Selector internalNameForPropertyName_version_ = "internalNameForPropertyName:version:";
			public static readonly Selector invalidate = "invalidate";
			public static readonly Selector joinsForRelationship_ = "joinsForRelationship:";
			public static readonly Selector mappingForAttribute_forConfigurationWithName_ = "mappingForAttribute:forConfigurationWithName:";
			public static readonly Selector mappingForEntity_forConfigurationWithName_ = "mappingForEntity:forConfigurationWithName:";
			public static readonly Selector mappingForRelationship_forConfigurationWithName_ = "mappingForRelationship:forConfigurationWithName:";
			public static readonly Selector mappingsForConfigurationWithName_inModel_ = "mappingsForConfigurationWithName:inModel:";
			public static readonly Selector primaryKeyForEntity_ = "primaryKeyForEntity:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSStoreMigrationPolicy : IEquatable<NSStoreMigrationPolicy> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSStoreMigrationPolicy;
		public static implicit operator NSObject( NSStoreMigrationPolicy value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSStoreMigrationPolicy value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSStoreMigrationPolicy value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSStoreMigrationPolicy?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSStoreMigrationPolicy value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSStoreMigrationPolicy value1, NSStoreMigrationPolicy value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSStoreMigrationPolicy value1, NSStoreMigrationPolicy value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSStoreMigrationPolicy( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSStoreMigrationPolicy alloc() {
			return new NSStoreMigrationPolicy( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static int migrationDebugLevel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrationDebugLevel( ClassHandle, CachedSelectors.migrationDebugLevel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static void setMigrationDebugLevel_( int level ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMigrationDebugLevel_( ClassHandle, CachedSelectors.setMigrationDebugLevel_, out ___occuredException, sizeof( int ), level );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject addMigratedStoreToCoordinator_withType_configuration_URL_options_error_( NObjective.RuntimeObject coordinator, NObjective.RuntimeObject withType, NObjective.RuntimeObject configuration, NObjective.RuntimeObject URL, NObjective.RuntimeObject options, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.addMigratedStoreToCoordinator_withType_configuration_URL_options_error_( Handle, CachedSelectors.addMigratedStoreToCoordinator_withType_configuration_URL_options_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), coordinator, withType, configuration, URL, options, error
			 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationConfiguration() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationConfiguration( Handle, CachedSelectors.destinationConfiguration, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationConfigurationForMigration_sourceMetadata_error_( NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceMetadata, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationConfigurationForMigration_sourceMetadata_error_( Handle, CachedSelectors.destinationConfigurationForMigration_sourceMetadata_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), migration, sourceMetadata, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationModel( Handle, CachedSelectors.destinationModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationOptions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationOptions( Handle, CachedSelectors.destinationOptions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationOptionsForMigration_sourceMetadata_error_( NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceMetadata, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationOptionsForMigration_sourceMetadata_error_( Handle, CachedSelectors.destinationOptionsForMigration_sourceMetadata_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), migration, sourceMetadata, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationType( Handle, CachedSelectors.destinationType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationTypeForMigration_sourceMetadata_error_( NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceMetadata, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationTypeForMigration_sourceMetadata_error_( Handle, CachedSelectors.destinationTypeForMigration_sourceMetadata_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), migration, sourceMetadata, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationURL() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationURL( Handle, CachedSelectors.destinationURL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject destinationURLForMigration_sourceURL_sourceMetadata_error_( NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceURL, NObjective.RuntimeObject sourceMetadata, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.destinationURLForMigration_sourceURL_sourceMetadata_error_( Handle, CachedSelectors.destinationURLForMigration_sourceURL_sourceMetadata_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), migration, sourceURL, sourceMetadata, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void didPerformMigrationWithManager_( NObjective.RuntimeObject manager ) {
			RuntimeObject ___occuredException;
			NativeMethods.didPerformMigrationWithManager_( Handle, CachedSelectors.didPerformMigrationWithManager_, out ___occuredException, sizeof( NObjective.RuntimeObject ), manager );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void handleMigrationError_inManager_( NObjective.RuntimeObject error, NObjective.RuntimeObject inManager ) {
			RuntimeObject ___occuredException;
			NativeMethods.handleMigrationError_inManager_( Handle, CachedSelectors.handleMigrationError_inManager_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), error, inManager );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject managerForSourceModel_destinationModel_error_( NObjective.RuntimeObject model, NObjective.RuntimeObject destinationModel, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.managerForSourceModel_destinationModel_error_( Handle, CachedSelectors.managerForSourceModel_destinationModel_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), model, destinationModel, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingModel( Handle, CachedSelectors.mappingModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject mappingModelForSourceModel_destinationModel_error_( NObjective.RuntimeObject model, NObjective.RuntimeObject destinationModel, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.mappingModelForSourceModel_destinationModel_error_( Handle, CachedSelectors.mappingModelForSourceModel_destinationModel_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), model, destinationModel, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public char migrateStoreAtURL_toURL_storeType_options_withManager_error_( NObjective.RuntimeObject url, NObjective.RuntimeObject toURL, NObjective.RuntimeObject storeType, NObjective.RuntimeObject options, NObjective.RuntimeObject withManager, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrateStoreAtURL_toURL_storeType_options_withManager_error_( Handle, CachedSelectors.migrateStoreAtURL_toURL_storeType_options_withManager_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), url, toURL, storeType, options, withManager, error
			 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject migrateStoreAtURL_withManager_metadata_options_error_( NObjective.RuntimeObject url, NObjective.RuntimeObject withManager, NObjective.RuntimeObject metadata, NObjective.RuntimeObject options, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrateStoreAtURL_withManager_metadata_options_error_( Handle, CachedSelectors.migrateStoreAtURL_withManager_metadata_options_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), url, withManager, metadata, options, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject migrationManager() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.migrationManager( Handle, CachedSelectors.migrationManager, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject persistentStoreCoordinator() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.persistentStoreCoordinator( Handle, CachedSelectors.persistentStoreCoordinator, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject resourceBundles() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.resourceBundles( Handle, CachedSelectors.resourceBundles, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setDestinationConfiguration_( NObjective.RuntimeObject configuration ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationConfiguration_( Handle, CachedSelectors.setDestinationConfiguration_, out ___occuredException, sizeof( NObjective.RuntimeObject ), configuration );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDestinationOptions_( NObjective.RuntimeObject options ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationOptions_( Handle, CachedSelectors.setDestinationOptions_, out ___occuredException, sizeof( NObjective.RuntimeObject ), options );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDestinationType_( NObjective.RuntimeObject type ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationType_( Handle, CachedSelectors.setDestinationType_, out ___occuredException, sizeof( NObjective.RuntimeObject ), type );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setDestinationURL_( NObjective.RuntimeObject url ) {
			RuntimeObject ___occuredException;
			NativeMethods.setDestinationURL_( Handle, CachedSelectors.setDestinationURL_, out ___occuredException, sizeof( NObjective.RuntimeObject ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMappingModel_( NObjective.RuntimeObject model ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMappingModel_( Handle, CachedSelectors.setMappingModel_, out ___occuredException, sizeof( NObjective.RuntimeObject ), model );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setMigrationManager_( NObjective.RuntimeObject manager ) {
			RuntimeObject ___occuredException;
			NativeMethods.setMigrationManager_( Handle, CachedSelectors.setMigrationManager_, out ___occuredException, sizeof( NObjective.RuntimeObject ), manager );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPersistentStoreCoordinator_( NObjective.RuntimeObject coordinator ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPersistentStoreCoordinator_( Handle, CachedSelectors.setPersistentStoreCoordinator_, out ___occuredException, sizeof( NObjective.RuntimeObject ), coordinator );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setPersistentStoreCoordinator_sourceURL_configuration_metadata_options_( NObjective.RuntimeObject coordinator, NObjective.RuntimeObject sourceURL, NObjective.RuntimeObject configuration, NObjective.RuntimeObject metadata, NObjective.RuntimeObject options ) {
			RuntimeObject ___occuredException;
			NativeMethods.setPersistentStoreCoordinator_sourceURL_configuration_metadata_options_( Handle, CachedSelectors.setPersistentStoreCoordinator_sourceURL_configuration_metadata_options_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), coordinator, sourceURL, configuration, metadata, options );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setResourceBundles_( NObjective.RuntimeObject bundles ) {
			RuntimeObject ___occuredException;
			NativeMethods.setResourceBundles_( Handle, CachedSelectors.setResourceBundles_, out ___occuredException, sizeof( NObjective.RuntimeObject ), bundles );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceConfiguration_( NObjective.RuntimeObject configuration ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceConfiguration_( Handle, CachedSelectors.setSourceConfiguration_, out ___occuredException, sizeof( NObjective.RuntimeObject ), configuration );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceMetadata_( NObjective.RuntimeObject metadata ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceMetadata_( Handle, CachedSelectors.setSourceMetadata_, out ___occuredException, sizeof( NObjective.RuntimeObject ), metadata );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceModel_( NObjective.RuntimeObject model ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceModel_( Handle, CachedSelectors.setSourceModel_, out ___occuredException, sizeof( NObjective.RuntimeObject ), model );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceOptions_( NObjective.RuntimeObject options ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceOptions_( Handle, CachedSelectors.setSourceOptions_, out ___occuredException, sizeof( NObjective.RuntimeObject ), options );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setSourceURL_( NObjective.RuntimeObject url ) {
			RuntimeObject ___occuredException;
			NativeMethods.setSourceURL_( Handle, CachedSelectors.setSourceURL_, out ___occuredException, sizeof( NObjective.RuntimeObject ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject sourceConfiguration() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceConfiguration( Handle, CachedSelectors.sourceConfiguration, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceMetadata() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceMetadata( Handle, CachedSelectors.sourceMetadata, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceModel() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceModel( Handle, CachedSelectors.sourceModel, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceModelForStoreAtURL_metadata_error_( NObjective.RuntimeObject url, NObjective.RuntimeObject metadata, System.IntPtr error ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceModelForStoreAtURL_metadata_error_( Handle, CachedSelectors.sourceModelForStoreAtURL_metadata_error_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( System.IntPtr ), url, metadata, error );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceOptions() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceOptions( Handle, CachedSelectors.sourceOptions, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceType() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceType( Handle, CachedSelectors.sourceType, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject sourceURL() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.sourceURL( Handle, CachedSelectors.sourceURL, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void willPerformMigrationWithManager_( NObjective.RuntimeObject manager ) {
			RuntimeObject ___occuredException;
			NativeMethods.willPerformMigrationWithManager_( Handle, CachedSelectors.willPerformMigrationWithManager_, out ___occuredException, sizeof( NObjective.RuntimeObject ), manager );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr addMigratedStoreToCoordinator_withType_configuration_URL_options_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coordinator, NObjective.RuntimeObject withType, NObjective.RuntimeObject configuration, NObjective.RuntimeObject URL, NObjective.RuntimeObject options, System.IntPtr error
			 );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationConfiguration( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationConfigurationForMigration_sourceMetadata_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceMetadata, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationOptions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationOptionsForMigration_sourceMetadata_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceMetadata, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationTypeForMigration_sourceMetadata_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceMetadata, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationURL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr destinationURLForMigration_sourceURL_sourceMetadata_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject migration, NObjective.RuntimeObject sourceURL, NObjective.RuntimeObject sourceMetadata, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void didPerformMigrationWithManager_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject manager );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void handleMigrationError_inManager_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject error, NObjective.RuntimeObject inManager );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr managerForSourceModel_destinationModel_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model, NObjective.RuntimeObject destinationModel, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr mappingModelForSourceModel_destinationModel_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model, NObjective.RuntimeObject destinationModel, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char migrateStoreAtURL_toURL_storeType_options_withManager_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url, NObjective.RuntimeObject toURL, NObjective.RuntimeObject storeType, NObjective.RuntimeObject options, NObjective.RuntimeObject withManager, System.IntPtr error
			 );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr migrateStoreAtURL_withManager_metadata_options_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url, NObjective.RuntimeObject withManager, NObjective.RuntimeObject metadata, NObjective.RuntimeObject options, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern int migrationDebugLevel( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr migrationManager( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr persistentStoreCoordinator( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr resourceBundles( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationConfiguration_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject configuration );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationOptions_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject options );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationType_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject type );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setDestinationURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMappingModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMigrationDebugLevel_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, int level );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setMigrationManager_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject manager );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPersistentStoreCoordinator_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coordinator );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setPersistentStoreCoordinator_sourceURL_configuration_metadata_options_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject coordinator, NObjective.RuntimeObject sourceURL, NObjective.RuntimeObject configuration, NObjective.RuntimeObject metadata, NObjective.RuntimeObject options );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setResourceBundles_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject bundles );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceConfiguration_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject configuration );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceMetadata_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject metadata );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceModel_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject model );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceOptions_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject options );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setSourceURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceConfiguration( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceMetadata( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceModel( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceModelForStoreAtURL_metadata_error_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url, NObjective.RuntimeObject metadata, System.IntPtr error );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceOptions( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceType( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr sourceURL( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void willPerformMigrationWithManager_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject manager );
		}
		static internal class CachedSelectors {
			public static readonly Selector addMigratedStoreToCoordinator_withType_configuration_URL_options_error_ = "addMigratedStoreToCoordinator:withType:configuration:URL:options:error:";
			public static readonly Selector destinationConfiguration = "destinationConfiguration";
			public static readonly Selector destinationConfigurationForMigration_sourceMetadata_error_ = "destinationConfigurationForMigration:sourceMetadata:error:";
			public static readonly Selector destinationModel = "destinationModel";
			public static readonly Selector destinationOptions = "destinationOptions";
			public static readonly Selector destinationOptionsForMigration_sourceMetadata_error_ = "destinationOptionsForMigration:sourceMetadata:error:";
			public static readonly Selector destinationType = "destinationType";
			public static readonly Selector destinationTypeForMigration_sourceMetadata_error_ = "destinationTypeForMigration:sourceMetadata:error:";
			public static readonly Selector destinationURL = "destinationURL";
			public static readonly Selector destinationURLForMigration_sourceURL_sourceMetadata_error_ = "destinationURLForMigration:sourceURL:sourceMetadata:error:";
			public static readonly Selector didPerformMigrationWithManager_ = "didPerformMigrationWithManager:";
			public static readonly Selector handleMigrationError_inManager_ = "handleMigrationError:inManager:";
			public static readonly Selector managerForSourceModel_destinationModel_error_ = "managerForSourceModel:destinationModel:error:";
			public static readonly Selector mappingModel = "mappingModel";
			public static readonly Selector mappingModelForSourceModel_destinationModel_error_ = "mappingModelForSourceModel:destinationModel:error:";
			public static readonly Selector migrateStoreAtURL_toURL_storeType_options_withManager_error_ = "migrateStoreAtURL:toURL:storeType:options:withManager:error:";
			public static readonly Selector migrateStoreAtURL_withManager_metadata_options_error_ = "migrateStoreAtURL:withManager:metadata:options:error:";
			public static readonly Selector migrationDebugLevel = "migrationDebugLevel";
			public static readonly Selector migrationManager = "migrationManager";
			public static readonly Selector persistentStoreCoordinator = "persistentStoreCoordinator";
			public static readonly Selector resourceBundles = "resourceBundles";
			public static readonly Selector setDestinationConfiguration_ = "setDestinationConfiguration:";
			public static readonly Selector setDestinationOptions_ = "setDestinationOptions:";
			public static readonly Selector setDestinationType_ = "setDestinationType:";
			public static readonly Selector setDestinationURL_ = "setDestinationURL:";
			public static readonly Selector setMappingModel_ = "setMappingModel:";
			public static readonly Selector setMigrationDebugLevel_ = "setMigrationDebugLevel:";
			public static readonly Selector setMigrationManager_ = "setMigrationManager:";
			public static readonly Selector setPersistentStoreCoordinator_ = "setPersistentStoreCoordinator:";
			public static readonly Selector setPersistentStoreCoordinator_sourceURL_configuration_metadata_options_ = "setPersistentStoreCoordinator:sourceURL:configuration:metadata:options:";
			public static readonly Selector setResourceBundles_ = "setResourceBundles:";
			public static readonly Selector setSourceConfiguration_ = "setSourceConfiguration:";
			public static readonly Selector setSourceMetadata_ = "setSourceMetadata:";
			public static readonly Selector setSourceModel_ = "setSourceModel:";
			public static readonly Selector setSourceOptions_ = "setSourceOptions:";
			public static readonly Selector setSourceURL_ = "setSourceURL:";
			public static readonly Selector sourceConfiguration = "sourceConfiguration";
			public static readonly Selector sourceMetadata = "sourceMetadata";
			public static readonly Selector sourceModel = "sourceModel";
			public static readonly Selector sourceModelForStoreAtURL_metadata_error_ = "sourceModelForStoreAtURL:metadata:error:";
			public static readonly Selector sourceOptions = "sourceOptions";
			public static readonly Selector sourceType = "sourceType";
			public static readonly Selector sourceURL = "sourceURL";
			public static readonly Selector willPerformMigrationWithManager_ = "willPerformMigrationWithManager:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSManagedObjectID ) )]
	public struct NSTemporaryObjectID : IEquatable<NSTemporaryObjectID> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSTemporaryObjectID;
		public static implicit operator NSManagedObjectID( NSTemporaryObjectID value ) {
			return new NSManagedObjectID( value.Handle );
		}
		public static implicit operator NSObject( NSTemporaryObjectID value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSTemporaryObjectID value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSTemporaryObjectID value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSTemporaryObjectID?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSTemporaryObjectID value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSTemporaryObjectID value1, NSTemporaryObjectID value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSTemporaryObjectID value1, NSTemporaryObjectID value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSTemporaryObjectID( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSTemporaryObjectID alloc() {
			return new NSTemporaryObjectID( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public static uint allocateBatch_forEntity_count_( System.IntPtr batch, NObjective.RuntimeObject forEntity, uint count ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.allocateBatch_forEntity_count_( ClassHandle, CachedSelectors.allocateBatch_forEntity_count_, out ___occuredException, sizeof( System.IntPtr ) + sizeof( NObjective.RuntimeObject ) + sizeof( uint ), batch, forEntity, count );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ( uint ) ___result;
		}
		unsafe public static char automaticallyNotifiesObserversForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.automaticallyNotifiesObserversForKey_( ClassHandle, CachedSelectors.automaticallyNotifiesObserversForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeClass classForStore_( NObjective.RuntimeObject store ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.classForStore_( ClassHandle, CachedSelectors.classForStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public static NObjective.RuntimeObject __initWithEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.__initWithEntity_( ClassHandle, CachedSelectors.__initWithEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static NObjective.RuntimeObject __initWithEntity_andUUIDString_( NObjective.RuntimeObject entity, NObjective.RuntimeObject andUUIDString ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.__initWithEntity_andUUIDString_( ClassHandle, CachedSelectors.__initWithEntity_andUUIDString_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, andUUIDString );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public static void __release() {
			RuntimeObject ___occuredException;
			NativeMethods.__release( ClassHandle, CachedSelectors.__release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public static void setObjectStoreIdentifier_( NObjective.RuntimeObject identifier ) {
			RuntimeObject ___occuredException;
			NativeMethods.setObjectStoreIdentifier_( ClassHandle, CachedSelectors.setObjectStoreIdentifier_, out ___occuredException, sizeof( NObjective.RuntimeObject ), identifier );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NSTemporaryObjectID initWithEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_( Handle, CachedSelectors.initWithEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSTemporaryObjectID( ___result );
		}
		unsafe public NSTemporaryObjectID initWithEntity_andUUIDString_( NObjective.RuntimeObject entity, NObjective.RuntimeObject andUUIDString ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithEntity_andUUIDString_( Handle, CachedSelectors.initWithEntity_andUUIDString_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), entity, andUUIDString );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSTemporaryObjectID( ___result );
		}
		unsafe public void release() {
			RuntimeObject ___occuredException;
			NativeMethods.release( Handle, CachedSelectors.release, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr __initWithEntity_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr __initWithEntity_andUUIDString_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject andUUIDString );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void __release( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern uint allocateBatch_forEntity_count_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, System.IntPtr batch, NObjective.RuntimeObject forEntity, uint count );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char automaticallyNotifiesObserversForKey_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern NObjective.RuntimeClass classForStore_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithEntity_andUUIDString_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity, NObjective.RuntimeObject andUUIDString );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void release( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setObjectStoreIdentifier_( RuntimeClass ___class, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject identifier );
		}
		static internal class CachedSelectors {
			public static readonly Selector __initWithEntity_ = "__initWithEntity:";
			public static readonly Selector __initWithEntity_andUUIDString_ = "__initWithEntity:andUUIDString:";
			public static readonly Selector __release = "__release";
			public static readonly Selector allocateBatch_forEntity_count_ = "allocateBatch:forEntity:count:";
			public static readonly Selector automaticallyNotifiesObserversForKey_ = "automaticallyNotifiesObserversForKey:";
			public static readonly Selector classForStore_ = "classForStore:";
			public static readonly Selector initWithEntity_ = "initWithEntity:";
			public static readonly Selector initWithEntity_andUUIDString_ = "initWithEntity:andUUIDString:";
			public static readonly Selector release = "release";
			public static readonly Selector setObjectStoreIdentifier_ = "setObjectStoreIdentifier:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSObject ) )]
	public struct NSValidationErrorLocalizationPolicy : IEquatable<NSValidationErrorLocalizationPolicy> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSValidationErrorLocalizationPolicy;
		public static implicit operator NSObject( NSValidationErrorLocalizationPolicy value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSValidationErrorLocalizationPolicy value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSValidationErrorLocalizationPolicy value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSValidationErrorLocalizationPolicy?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSValidationErrorLocalizationPolicy value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSValidationErrorLocalizationPolicy value1, NSValidationErrorLocalizationPolicy value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSValidationErrorLocalizationPolicy value1, NSValidationErrorLocalizationPolicy value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSValidationErrorLocalizationPolicy( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSValidationErrorLocalizationPolicy alloc() {
			return new NSValidationErrorLocalizationPolicy( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSValidationErrorLocalizationPolicy initWithURL_( NObjective.RuntimeObject url ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithURL_( Handle, CachedSelectors.initWithURL_, out ___occuredException, sizeof( NObjective.RuntimeObject ), url );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSValidationErrorLocalizationPolicy( ___result );
		}
		unsafe public NObjective.RuntimeObject localizationDictionary() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.localizationDictionary( Handle, CachedSelectors.localizationDictionary, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject localizedEntityNameForEntity_( NObjective.RuntimeObject entity ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.localizedEntityNameForEntity_( Handle, CachedSelectors.localizedEntityNameForEntity_, out ___occuredException, sizeof( NObjective.RuntimeObject ), entity );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject localizedModelStringForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.localizedModelStringForKey_( Handle, CachedSelectors.localizedModelStringForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject localizedPropertyNameForProperty_( NObjective.RuntimeObject property ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.localizedPropertyNameForProperty_( Handle, CachedSelectors.localizedPropertyNameForProperty_, out ___occuredException, sizeof( NObjective.RuntimeObject ), property );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void setLocalizationDictionary_( NObjective.RuntimeObject dictionary ) {
			RuntimeObject ___occuredException;
			NativeMethods.setLocalizationDictionary_( Handle, CachedSelectors.setLocalizationDictionary_, out ___occuredException, sizeof( NObjective.RuntimeObject ), dictionary );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithURL_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject url );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr localizationDictionary( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr localizedEntityNameForEntity_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject entity );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr localizedModelStringForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr localizedPropertyNameForProperty_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject property );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setLocalizationDictionary_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject dictionary );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithURL_ = "initWithURL:";
			public static readonly Selector localizationDictionary = "localizationDictionary";
			public static readonly Selector localizedEntityNameForEntity_ = "localizedEntityNameForEntity:";
			public static readonly Selector localizedModelStringForKey_ = "localizedModelStringForKey:";
			public static readonly Selector localizedPropertyNameForProperty_ = "localizedPropertyNameForProperty:";
			public static readonly Selector setLocalizationDictionary_ = "setLocalizationDictionary:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSPersistentStoreMap ) )]
	public struct NSXMLDocumentMap : IEquatable<NSXMLDocumentMap> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSXMLDocumentMap;
		public static implicit operator NSPersistentStoreMap( NSXMLDocumentMap value ) {
			return new NSPersistentStoreMap( value.Handle );
		}
		public static implicit operator NSObject( NSXMLDocumentMap value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSXMLDocumentMap value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSXMLDocumentMap value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSXMLDocumentMap?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSXMLDocumentMap value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSXMLDocumentMap value1, NSXMLDocumentMap value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSXMLDocumentMap value1, NSXMLDocumentMap value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSXMLDocumentMap( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSXMLDocumentMap alloc() {
			return new NSXMLDocumentMap( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public char containsObjectWithID_( NObjective.RuntimeObject id ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.containsObjectWithID_( Handle, CachedSelectors.containsObjectWithID_, out ___occuredException, sizeof( NObjective.RuntimeObject ), id );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public void createAttributeChildOnNode_forAttribute_type_andValue_( NObjective.RuntimeObject node, NObjective.RuntimeObject forAttribute, NObjective.RuntimeObject type, NObjective.RuntimeObject andValue ) {
			RuntimeObject ___occuredException;
			NativeMethods.createAttributeChildOnNode_forAttribute_type_andValue_( Handle, CachedSelectors.createAttributeChildOnNode_forAttribute_type_andValue_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), node, forAttribute, type, andValue );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject createRelationshipChildOnNode_forRelationshipDescription_( NObjective.RuntimeObject node, NObjective.RuntimeObject forRelationshipDescription ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createRelationshipChildOnNode_forRelationshipDescription_( Handle, CachedSelectors.createRelationshipChildOnNode_forRelationshipDescription_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), node, forRelationshipDescription );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject document() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.document( Handle, CachedSelectors.document, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject getIDRefStringForValue_ofRelationship_stringKeys_objectIDMapping_objectForError_( NObjective.RuntimeObject value, NObjective.RuntimeObject ofRelationship, NObjective.RuntimeObject stringKeys, NObjective.RuntimeObject objectIDMapping, NObjective.RuntimeObject objectForError ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getIDRefStringForValue_ofRelationship_stringKeys_objectIDMapping_objectForError_( Handle, CachedSelectors.getIDRefStringForValue_ofRelationship_stringKeys_objectIDMapping_objectForError_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, ofRelationship, stringKeys, objectIDMapping, objectForError );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject getXMLAttributeValueFromObject_forAttribute_( NObjective.RuntimeObject @object, NObjective.RuntimeObject forAttribute ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getXMLAttributeValueFromObject_forAttribute_( Handle, CachedSelectors.getXMLAttributeValueFromObject_forAttribute_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, forAttribute );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSXMLDocumentMap initWithDocument_forStore_( NObjective.RuntimeObject document, NObjective.RuntimeObject forStore ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithDocument_forStore_( Handle, CachedSelectors.initWithDocument_forStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), document, forStore );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSXMLDocumentMap( ___result );
		}
		unsafe public NObjective.RuntimeObject nodeFromManagedObject_objectIDMap_( NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.nodeFromManagedObject_objectIDMap_( Handle, CachedSelectors.nodeFromManagedObject_objectIDMap_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, objectIDMap );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void prepareForSave() {
			RuntimeObject ___occuredException;
			NativeMethods.prepareForSave( Handle, CachedSelectors.prepareForSave, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject retainedXmlInfoForRelationship_( NObjective.RuntimeObject relationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedXmlInfoForRelationship_( Handle, CachedSelectors.retainedXmlInfoForRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ), relationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void updateXMLNode_fromObject_objectIDMapping_( NObjective.RuntimeObject node, NObjective.RuntimeObject fromObject, NObjective.RuntimeObject objectIDMapping ) {
			RuntimeObject ___occuredException;
			NativeMethods.updateXMLNode_fromObject_objectIDMapping_( Handle, CachedSelectors.updateXMLNode_fromObject_objectIDMapping_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), node, fromObject, objectIDMapping );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject xmlInfoForAttribute_( NObjective.RuntimeObject attribute ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.xmlInfoForAttribute_( Handle, CachedSelectors.xmlInfoForAttribute_, out ___occuredException, sizeof( NObjective.RuntimeObject ), attribute );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern char containsObjectWithID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject id );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createAttributeChildOnNode_forAttribute_type_andValue_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject node, NObjective.RuntimeObject forAttribute, NObjective.RuntimeObject type, NObjective.RuntimeObject andValue );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createRelationshipChildOnNode_forRelationshipDescription_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject node, NObjective.RuntimeObject forRelationshipDescription );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr document( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr getIDRefStringForValue_ofRelationship_stringKeys_objectIDMapping_objectForError_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject ofRelationship, NObjective.RuntimeObject stringKeys, NObjective.RuntimeObject objectIDMapping, NObjective.RuntimeObject objectForError );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr getXMLAttributeValueFromObject_forAttribute_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject forAttribute );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithDocument_forStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject document, NObjective.RuntimeObject forStore );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr nodeFromManagedObject_objectIDMap_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject objectIDMap );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void prepareForSave( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedXmlInfoForRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void updateXMLNode_fromObject_objectIDMapping_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject node, NObjective.RuntimeObject fromObject, NObjective.RuntimeObject objectIDMapping );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr xmlInfoForAttribute_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject attribute );
		}
		static internal class CachedSelectors {
			public static readonly Selector containsObjectWithID_ = "containsObjectWithID:";
			public static readonly Selector createAttributeChildOnNode_forAttribute_type_andValue_ = "createAttributeChildOnNode:forAttribute:type:andValue:";
			public static readonly Selector createRelationshipChildOnNode_forRelationshipDescription_ = "createRelationshipChildOnNode:forRelationshipDescription:";
			public static readonly Selector document = "document";
			public static readonly Selector getIDRefStringForValue_ofRelationship_stringKeys_objectIDMapping_objectForError_ = "getIDRefStringForValue:ofRelationship:stringKeys:objectIDMapping:objectForError:";
			public static readonly Selector getXMLAttributeValueFromObject_forAttribute_ = "getXMLAttributeValueFromObject:forAttribute:";
			public static readonly Selector initWithDocument_forStore_ = "initWithDocument:forStore:";
			public static readonly Selector nodeFromManagedObject_objectIDMap_ = "nodeFromManagedObject:objectIDMap:";
			public static readonly Selector prepareForSave = "prepareForSave";
			public static readonly Selector retainedXmlInfoForRelationship_ = "retainedXmlInfoForRelationship:";
			public static readonly Selector updateXMLNode_fromObject_objectIDMapping_ = "updateXMLNode:fromObject:objectIDMapping:";
			public static readonly Selector xmlInfoForAttribute_ = "xmlInfoForAttribute:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSStoreMapNode ) )]
	public struct NSXMLDocumentMapNode : IEquatable<NSXMLDocumentMapNode> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSXMLDocumentMapNode;
		public static implicit operator NSStoreMapNode( NSXMLDocumentMapNode value ) {
			return new NSStoreMapNode( value.Handle );
		}
		public static implicit operator NSObject( NSXMLDocumentMapNode value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSXMLDocumentMapNode value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSXMLDocumentMapNode value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSXMLDocumentMapNode?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSXMLDocumentMapNode value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSXMLDocumentMapNode value1, NSXMLDocumentMapNode value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSXMLDocumentMapNode value1, NSXMLDocumentMapNode value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSXMLDocumentMapNode( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSXMLDocumentMapNode alloc() {
			return new NSXMLDocumentMapNode( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NSXMLDocumentMapNode initWithXMLNode_objectID_( NObjective.RuntimeObject node, NObjective.RuntimeObject objectID ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithXMLNode_objectID_( Handle, CachedSelectors.initWithXMLNode_objectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), node, objectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSXMLDocumentMapNode( ___result );
		}
		unsafe public void setAllDestinations_( NObjective.RuntimeObject destinations ) {
			RuntimeObject ___occuredException;
			NativeMethods.setAllDestinations_( Handle, CachedSelectors.setAllDestinations_, out ___occuredException, sizeof( NObjective.RuntimeObject ), destinations );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject valueForKey_( NObjective.RuntimeObject key ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.valueForKey_( Handle, CachedSelectors.valueForKey_, out ___occuredException, sizeof( NObjective.RuntimeObject ), key );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject xmlNode() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.xmlNode( Handle, CachedSelectors.xmlNode, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithXMLNode_objectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject node, NObjective.RuntimeObject objectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setAllDestinations_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject destinations );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr valueForKey_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject key );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr xmlNode( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector initWithXMLNode_objectID_ = "initWithXMLNode:objectID:";
			public static readonly Selector setAllDestinations_ = "setAllDestinations:";
			public static readonly Selector valueForKey_ = "valueForKey:";
			public static readonly Selector xmlNode = "xmlNode";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSMappedObjectStore ) )]
	public struct NSXMLObjectStore : IEquatable<NSXMLObjectStore> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSXMLObjectStore;
		public static implicit operator NSMappedObjectStore( NSXMLObjectStore value ) {
			return new NSMappedObjectStore( value.Handle );
		}
		public static implicit operator NSPersistentStore( NSXMLObjectStore value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSXMLObjectStore value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSXMLObjectStore value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSXMLObjectStore value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSXMLObjectStore?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSXMLObjectStore value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSXMLObjectStore value1, NSXMLObjectStore value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSXMLObjectStore value1, NSXMLObjectStore value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSXMLObjectStore( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSXMLObjectStore alloc() {
			return new NSXMLObjectStore( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSAtomicStore ) )]
	public struct NSXMLObjectStore2 : IEquatable<NSXMLObjectStore2> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSXMLObjectStore2;
		public static implicit operator NSAtomicStore( NSXMLObjectStore2 value ) {
			return new NSAtomicStore( value.Handle );
		}
		public static implicit operator NSPersistentStore( NSXMLObjectStore2 value ) {
			return new NSPersistentStore( value.Handle );
		}
		public static implicit operator NSObject( NSXMLObjectStore2 value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSXMLObjectStore2 value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSXMLObjectStore2 value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSXMLObjectStore2?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSXMLObjectStore2 value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSXMLObjectStore2 value1, NSXMLObjectStore2 value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSXMLObjectStore2 value1, NSXMLObjectStore2 value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSXMLObjectStore2( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSXMLObjectStore2 alloc() {
			return new NSXMLObjectStore2( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public void createAttributeChildOnNode_forAttribute_type_andValue_( NObjective.RuntimeObject node, NObjective.RuntimeObject forAttribute, NObjective.RuntimeObject type, NObjective.RuntimeObject andValue ) {
			RuntimeObject ___occuredException;
			NativeMethods.createAttributeChildOnNode_forAttribute_type_andValue_( Handle, CachedSelectors.createAttributeChildOnNode_forAttribute_type_andValue_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), node, forAttribute, type, andValue );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject createRelationshipChildOnNode_forRelationshipDescription_( NObjective.RuntimeObject node, NObjective.RuntimeObject forRelationshipDescription ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.createRelationshipChildOnNode_forRelationshipDescription_( Handle, CachedSelectors.createRelationshipChildOnNode_forRelationshipDescription_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), node, forRelationshipDescription );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject getIDRefStringForValue_ofRelationship_objectForError_( NObjective.RuntimeObject value, NObjective.RuntimeObject ofRelationship, NObjective.RuntimeObject objectForError ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getIDRefStringForValue_ofRelationship_objectForError_( Handle, CachedSelectors.getIDRefStringForValue_ofRelationship_objectForError_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), value, ofRelationship, objectForError );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject getXMLAttributeValueFromObject_forAttribute_( NObjective.RuntimeObject @object, NObjective.RuntimeObject forAttribute ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.getXMLAttributeValueFromObject_forAttribute_( Handle, CachedSelectors.getXMLAttributeValueFromObject_forAttribute_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), @object, forAttribute );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public ulong nextPK64() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.nextPK64( Handle, CachedSelectors.nextPK64, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return ___result;
		}
		unsafe public NObjective.RuntimeObject retainedXmlInfoForRelationship_( NObjective.RuntimeObject relationship ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.retainedXmlInfoForRelationship_( Handle, CachedSelectors.retainedXmlInfoForRelationship_, out ___occuredException, sizeof( NObjective.RuntimeObject ), relationship );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject xmlInfoForAttribute_( NObjective.RuntimeObject attribute ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.xmlInfoForAttribute_( Handle, CachedSelectors.xmlInfoForAttribute_, out ___occuredException, sizeof( NObjective.RuntimeObject ), attribute );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void createAttributeChildOnNode_forAttribute_type_andValue_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject node, NObjective.RuntimeObject forAttribute, NObjective.RuntimeObject type, NObjective.RuntimeObject andValue );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr createRelationshipChildOnNode_forRelationshipDescription_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject node, NObjective.RuntimeObject forRelationshipDescription );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr getIDRefStringForValue_ofRelationship_objectForError_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject value, NObjective.RuntimeObject ofRelationship, NObjective.RuntimeObject objectForError );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr getXMLAttributeValueFromObject_forAttribute_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject @object, NObjective.RuntimeObject forAttribute );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern ulong nextPK64( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr retainedXmlInfoForRelationship_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject relationship );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr xmlInfoForAttribute_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject attribute );
		}
		static internal class CachedSelectors {
			public static readonly Selector createAttributeChildOnNode_forAttribute_type_andValue_ = "createAttributeChildOnNode:forAttribute:type:andValue:";
			public static readonly Selector createRelationshipChildOnNode_forRelationshipDescription_ = "createRelationshipChildOnNode:forRelationshipDescription:";
			public static readonly Selector getIDRefStringForValue_ofRelationship_objectForError_ = "getIDRefStringForValue:ofRelationship:objectForError:";
			public static readonly Selector getXMLAttributeValueFromObject_forAttribute_ = "getXMLAttributeValueFromObject:forAttribute:";
			public static readonly Selector nextPK64 = "nextPK64";
			public static readonly Selector retainedXmlInfoForRelationship_ = "retainedXmlInfoForRelationship:";
			public static readonly Selector xmlInfoForAttribute_ = "xmlInfoForAttribute:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	[ProxyBaseClass( typeof( NSAtomicStoreCacheNode ) )]
	public struct NSXMLObjectStoreCacheNode2 : IEquatable<NSXMLObjectStoreCacheNode2> {
		[FieldOffsetAttribute( 0 )]
		private NObjective.RuntimeObject Handle;
		public static readonly RuntimeClass ClassHandle = CoreDataCachedClasses.NSXMLObjectStoreCacheNode2;
		public static implicit operator NSAtomicStoreCacheNode( NSXMLObjectStoreCacheNode2 value ) {
			return new NSAtomicStoreCacheNode( value.Handle );
		}
		public static implicit operator NSObject( NSXMLObjectStoreCacheNode2 value ) {
			return new NSObject( value.Handle );
		}
		public static implicit operator IntPtr( NSXMLObjectStoreCacheNode2 value ) {
			return value.Handle;
		}
		public static implicit operator NObjective.RuntimeObject( NSXMLObjectStoreCacheNode2 value ) {
			return value.Handle;
		}
		public override bool Equals( object value ) {
			var compareTo = value as NSXMLObjectStoreCacheNode2?;
			return compareTo != null && Handle == compareTo.Value.Handle;
		}
		public bool Equals( NSXMLObjectStoreCacheNode2 value ) {
			return Handle == value.Handle;
		}
		public static bool operator ==( NSXMLObjectStoreCacheNode2 value1, NSXMLObjectStoreCacheNode2 value2 ) {
			return value1.Handle == value2.Handle;
		}
		public static bool operator !=( NSXMLObjectStoreCacheNode2 value1, NSXMLObjectStoreCacheNode2 value2 ) {
			return value1.Handle != value2.Handle;
		}
		public NSXMLObjectStoreCacheNode2( IntPtr value ) {
			this.Handle = new RuntimeObject( value );
		}
		public static NSXMLObjectStoreCacheNode2 alloc() {
			return new NSXMLObjectStoreCacheNode2( ClassHandle.InvokeIntPtr( Selectors.alloc ) );
		}
		unsafe public NObjective.RuntimeObject entity() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entity( Handle, CachedSelectors.entity, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject entityName() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.entityName( Handle, CachedSelectors.entityName, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NObjective.RuntimeObject externalData() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.externalData( Handle, CachedSelectors.externalData, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public NSXMLObjectStoreCacheNode2 initWithData_objectID_( NObjective.RuntimeObject data, NObjective.RuntimeObject objectID ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.initWithData_objectID_( Handle, CachedSelectors.initWithData_objectID_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), data, objectID );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NSXMLObjectStoreCacheNode2( ___result );
		}
		unsafe public NObjective.RuntimeObject oidReferenceData() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.oidReferenceData( Handle, CachedSelectors.oidReferenceData, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		unsafe public void resetCaches() {
			RuntimeObject ___occuredException;
			NativeMethods.resetCaches( Handle, CachedSelectors.resetCaches, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public void setStore_( NObjective.RuntimeObject store ) {
			RuntimeObject ___occuredException;
			NativeMethods.setStore_( Handle, CachedSelectors.setStore_, out ___occuredException, sizeof( NObjective.RuntimeObject ), store );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
		}
		unsafe public NObjective.RuntimeObject store() {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.store( Handle, CachedSelectors.store, out ___occuredException, 0 );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entity( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr entityName( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr externalData( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr initWithData_objectID_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject data, NObjective.RuntimeObject objectID );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr oidReferenceData( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void resetCaches( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern void setStore_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject store );
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr store( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize );
		}
		static internal class CachedSelectors {
			public static readonly Selector entity = "entity";
			public static readonly Selector entityName = "entityName";
			public static readonly Selector externalData = "externalData";
			public static readonly Selector initWithData_objectID_ = "initWithData:objectID:";
			public static readonly Selector oidReferenceData = "oidReferenceData";
			public static readonly Selector resetCaches = "resetCaches";
			public static readonly Selector setStore_ = "setStore:";
			public static readonly Selector store = "store";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSComparisonPredicate {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSComparisonPredicate ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSInPredicateOperator {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_ofPredicate_( this NSInPredicateOperator ___this, NObjective.RuntimeObject context, NObjective.RuntimeObject ofPredicate ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_ofPredicate_( ___this, CachedSelectors.minimalFormInContext_ofPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, ofPredicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_ofPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject ofPredicate );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ofPredicate_ = "minimalFormInContext:ofPredicate:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSSetExpression {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSSetExpression ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSCompoundPredicateOperator {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_ofPredicates_( this NSCompoundPredicateOperator ___this, NObjective.RuntimeObject context, NObjective.RuntimeObject ofPredicates ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_ofPredicates_( ___this, CachedSelectors.minimalFormInContext_ofPredicates_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, ofPredicates );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_ofPredicates_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject ofPredicates );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ofPredicates_ = "minimalFormInContext:ofPredicates:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSSubqueryExpression {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSSubqueryExpression ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSFunctionExpression {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSFunctionExpression ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSCompoundPredicate {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSCompoundPredicate ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSComparisonPredicateOperator {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_ofPredicate_( this NSComparisonPredicateOperator ___this, NObjective.RuntimeObject context, NObjective.RuntimeObject ofPredicate ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_ofPredicate_( ___this, CachedSelectors.minimalFormInContext_ofPredicate_, out ___occuredException, sizeof( NObjective.RuntimeObject ) + sizeof( NObjective.RuntimeObject ), context, ofPredicate );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_ofPredicate_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context, NObjective.RuntimeObject ofPredicate );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ofPredicate_ = "minimalFormInContext:ofPredicate:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSPredicate {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSPredicate ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	[StructLayoutAttribute( LayoutKind.Explicit )]
	public static class CoreDataExtensionsOfNSExpression {
		private static int ___lazyLoad = CoreDataCachedClasses.___lazyLoad;
		unsafe public static NObjective.RuntimeObject minimalFormInContext_( this NSExpression ___this, NObjective.RuntimeObject context ) {
			RuntimeObject ___occuredException;
			var ___result = NativeMethods.minimalFormInContext_( ___this, CachedSelectors.minimalFormInContext_, out ___occuredException, sizeof( NObjective.RuntimeObject ), context );
			if( ___occuredException != RuntimeObject.Null ) throw RuntimeException.Create( ___occuredException ); 
			return new NObjective.RuntimeObject( ___result );
		}
		private static class NativeMethods {
			[DllImport( Runtime.InteropLibrary, EntryPoint = "objc_msgSend_eh2" )]
			public static extern IntPtr minimalFormInContext_( RuntimeObject ___object, Selector ___selector, out RuntimeObject ___occuredException, int ___stackSize, NObjective.RuntimeObject context );
		}
		static internal class CachedSelectors {
			public static readonly Selector minimalFormInContext_ = "minimalFormInContext:";
		}
	}
	static internal class CoreDataCachedClasses {
		static internal int ___lazyLoad = Platform.NativeMethods.dlopen( "/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData" );
		public static readonly RuntimeClass _NS128bitWrapper = "_NS128bitWrapper";
		public static readonly RuntimeClass _NSCoreDataException = "_NSCoreDataException";
		public static readonly RuntimeClass _NSCoreDataOptimisticLockingException = "_NSCoreDataOptimisticLockingException";
		public static readonly RuntimeClass _NSCoreManagedObjectID = "_NSCoreManagedObjectID";
		public static readonly RuntimeClass _NSFaultingMutableArray = "_NSFaultingMutableArray";
		public static readonly RuntimeClass _NSFaultingMutableSet = "_NSFaultingMutableSet";
		public static readonly RuntimeClass _NSFaultingMutableSetMutationMethods = "_NSFaultingMutableSetMutationMethods";
		public static readonly RuntimeClass _NSInvalidationFaultHandler = "_NSInvalidationFaultHandler";
		public static readonly RuntimeClass _NSKnownKeysEnumerator = "_NSKnownKeysEnumerator";
		public static readonly RuntimeClass _NSMemoryStorePredicateRemapper = "_NSMemoryStorePredicateRemapper";
		public static readonly RuntimeClass _NSNotifyingWrapperMutableSet = "_NSNotifyingWrapperMutableSet";
		public static readonly RuntimeClass _NSPersistenceUtilities = "_NSPersistenceUtilities";
		public static readonly RuntimeClass _NSProxyWrapperMutableSet = "_NSProxyWrapperMutableSet";
		public static readonly RuntimeClass _NSSQLGenerator = "_NSSQLGenerator";
		public static readonly RuntimeClass _NSTemporaryObjectID2 = "_NSTemporaryObjectID2";
		public static readonly RuntimeClass _PFArray = "_PFArray";
		public static readonly RuntimeClass _PFContextMapTable = "_PFContextMapTable";
		public static readonly RuntimeClass _PFLock = "_PFLock";
		public static readonly RuntimeClass _PFManagedObjectReferenceQueue = "_PFManagedObjectReferenceQueue";
		public static readonly RuntimeClass _PFRoutines = "_PFRoutines";
		public static readonly RuntimeClass _PFTask = "_PFTask";
		public static readonly RuntimeClass _PFWeakReference = "_PFWeakReference";
		public static readonly RuntimeClass NSAtomicStore = "NSAtomicStore";
		public static readonly RuntimeClass NSAtomicStoreCacheNode = "NSAtomicStoreCacheNode";
		public static readonly RuntimeClass NSAttributeDescription = "NSAttributeDescription";
		public static readonly RuntimeClass NSAttributeStoreMapping = "NSAttributeStoreMapping";
		public static readonly RuntimeClass NSBasicObjectID = "NSBasicObjectID";
		public static readonly RuntimeClass NSBasicObjectID64 = "NSBasicObjectID64";
		public static readonly RuntimeClass NSBinaryObjectStore = "NSBinaryObjectStore";
		public static readonly RuntimeClass NSBinaryObjectStoreFile = "NSBinaryObjectStoreFile";
		public static readonly RuntimeClass NSCountRequest = "NSCountRequest";
		public static readonly RuntimeClass NSDictionaryMapNode = "NSDictionaryMapNode";
		public static readonly RuntimeClass NSDictionaryStoreMap = "NSDictionaryStoreMap";
		public static readonly RuntimeClass NSEntityDescription = "NSEntityDescription";
		public static readonly RuntimeClass NSEntityMapping = "NSEntityMapping";
		public static readonly RuntimeClass NSEntityMigrationPolicy = "NSEntityMigrationPolicy";
		public static readonly RuntimeClass NSEntityStoreMapping = "NSEntityStoreMapping";
		public static readonly RuntimeClass NSExternalRefCountedData = "NSExternalRefCountedData";
		public static readonly RuntimeClass NSFaultHandler = "NSFaultHandler";
		public static readonly RuntimeClass NSFetchedPropertyDescription = "NSFetchedPropertyDescription";
		public static readonly RuntimeClass NSFetchRequest = "NSFetchRequest";
		public static readonly RuntimeClass NSFetchRequestExpression = "NSFetchRequestExpression";
		public static readonly RuntimeClass NSJoin = "NSJoin";
		public static readonly RuntimeClass NSKnownKeysDictionary = "NSKnownKeysDictionary";
		public static readonly RuntimeClass NSKnownKeysDictionary1 = "NSKnownKeysDictionary1";
		public static readonly RuntimeClass NSKnownKeysMappingStrategy = "NSKnownKeysMappingStrategy";
		public static readonly RuntimeClass NSKnownKeysMappingStrategy1 = "NSKnownKeysMappingStrategy1";
		public static readonly RuntimeClass NSManagedObject = "NSManagedObject";
		public static readonly RuntimeClass NSManagedObjectContext = "NSManagedObjectContext";
		public static readonly RuntimeClass NSManagedObjectID = "NSManagedObjectID";
		public static readonly RuntimeClass NSManagedObjectModel = "NSManagedObjectModel";
		public static readonly RuntimeClass NSManagedObjectModelBundle = "NSManagedObjectModelBundle";
		public static readonly RuntimeClass NSMappedObjectStore = "NSMappedObjectStore";
		public static readonly RuntimeClass NSMappingModel = "NSMappingModel";
		public static readonly RuntimeClass NSMemoryObjectStore = "NSMemoryObjectStore";
		public static readonly RuntimeClass NSMemoryStoreEqualityPredicateOperator = "NSMemoryStoreEqualityPredicateOperator";
		public static readonly RuntimeClass NSMemoryStoreInPredicateOperator = "NSMemoryStoreInPredicateOperator";
		public static readonly RuntimeClass NSMergedPolicyLocalizationPolicy = "NSMergedPolicyLocalizationPolicy";
		public static readonly RuntimeClass NSMergePolicy = "NSMergePolicy";
		public static readonly RuntimeClass NSMigrationContext = "NSMigrationContext";
		public static readonly RuntimeClass NSMigrationManager = "NSMigrationManager";
		public static readonly RuntimeClass NSPersistentStore = "NSPersistentStore";
		public static readonly RuntimeClass NSPersistentStoreCache = "NSPersistentStoreCache";
		public static readonly RuntimeClass NSPersistentStoreCoordinator = "NSPersistentStoreCoordinator";
		public static readonly RuntimeClass NSPersistentStoreMap = "NSPersistentStoreMap";
		public static readonly RuntimeClass NSPersistentStoreRequest = "NSPersistentStoreRequest";
		public static readonly RuntimeClass NSPrivateCoreDataClassForFindingBundle = "NSPrivateCoreDataClassForFindingBundle";
		public static readonly RuntimeClass NSPropertyDescription = "NSPropertyDescription";
		public static readonly RuntimeClass NSPropertyMapping = "NSPropertyMapping";
		public static readonly RuntimeClass NSPropertyStoreMapping = "NSPropertyStoreMapping";
		public static readonly RuntimeClass NSRefreshRequest = "NSRefreshRequest";
		public static readonly RuntimeClass NSRelationshipDescription = "NSRelationshipDescription";
		public static readonly RuntimeClass NSRelationshipStoreMapping = "NSRelationshipStoreMapping";
		public static readonly RuntimeClass NSSaveChangesRequest = "NSSaveChangesRequest";
		public static readonly RuntimeClass NSSQLAdapter = "NSSQLAdapter";
		public static readonly RuntimeClass NSSQLAdapterOperation = "NSSQLAdapterOperation";
		public static readonly RuntimeClass NSSQLAliasGenerator = "NSSQLAliasGenerator";
		public static readonly RuntimeClass NSSQLAttribute = "NSSQLAttribute";
		public static readonly RuntimeClass NSSQLBindVariable = "NSSQLBindVariable";
		public static readonly RuntimeClass NSSQLChannel = "NSSQLChannel";
		public static readonly RuntimeClass NSSQLColumn = "NSSQLColumn";
		public static readonly RuntimeClass NSSQLCompoundWhereIntermediate = "NSSQLCompoundWhereIntermediate";
		public static readonly RuntimeClass NSSQLConnection = "NSSQLConnection";
		public static readonly RuntimeClass NSSQLConstantValueIntermediate = "NSSQLConstantValueIntermediate";
		public static readonly RuntimeClass NSSQLCore = "NSSQLCore";
		public static readonly RuntimeClass NSSQLCorrelation = "NSSQLCorrelation";
		public static readonly RuntimeClass NSSQLEntity = "NSSQLEntity";
		public static readonly RuntimeClass NSSQLEntityKey = "NSSQLEntityKey";
		public static readonly RuntimeClass NSSQLExpressionIntermediate = "NSSQLExpressionIntermediate";
		public static readonly RuntimeClass NSSQLFetchCountIntermediate = "NSSQLFetchCountIntermediate";
		public static readonly RuntimeClass NSSQLFetchIntermediate = "NSSQLFetchIntermediate";
		public static readonly RuntimeClass NSSQLForeignEntityKey = "NSSQLForeignEntityKey";
		public static readonly RuntimeClass NSSQLForeignKey = "NSSQLForeignKey";
		public static readonly RuntimeClass NSSQLForeignKeyIntermediate = "NSSQLForeignKeyIntermediate";
		public static readonly RuntimeClass NSSQLGenerator = "NSSQLGenerator";
		public static readonly RuntimeClass NSSQLIntermediate = "NSSQLIntermediate";
		public static readonly RuntimeClass NSSQLiteAdapter = "NSSQLiteAdapter";
		public static readonly RuntimeClass NSSQLiteConnection = "NSSQLiteConnection";
		public static readonly RuntimeClass NSSQLiteStatement = "NSSQLiteStatement";
		public static readonly RuntimeClass NSSQLJoinIntermediate = "NSSQLJoinIntermediate";
		public static readonly RuntimeClass NSSQLKeypathExpressionIntermediate = "NSSQLKeypathExpressionIntermediate";
		public static readonly RuntimeClass NSSQLLimitIntermediate = "NSSQLLimitIntermediate";
		public static readonly RuntimeClass NSSQLManyToMany = "NSSQLManyToMany";
		public static readonly RuntimeClass NSSQLModel = "NSSQLModel";
		public static readonly RuntimeClass NSSQLObjectID = "NSSQLObjectID";
		public static readonly RuntimeClass NSSQLOperation = "NSSQLOperation";
		public static readonly RuntimeClass NSSQLOptLockKey = "NSSQLOptLockKey";
		public static readonly RuntimeClass NSSQLOrderIntermediate = "NSSQLOrderIntermediate";
		public static readonly RuntimeClass NSSQLPredicateAnalyser = "NSSQLPredicateAnalyser";
		public static readonly RuntimeClass NSSQLPrimaryKey = "NSSQLPrimaryKey";
		public static readonly RuntimeClass NSSQLProperty = "NSSQLProperty";
		public static readonly RuntimeClass NSSQLRelationship = "NSSQLRelationship";
		public static readonly RuntimeClass NSSQLRow = "NSSQLRow";
		public static readonly RuntimeClass NSSQLRowCache = "NSSQLRowCache";
		public static readonly RuntimeClass NSSQLSelectIntermediate = "NSSQLSelectIntermediate";
		public static readonly RuntimeClass NSSQLSimpleWhereIntermediate = "NSSQLSimpleWhereIntermediate";
		public static readonly RuntimeClass NSSQLStatement = "NSSQLStatement";
		public static readonly RuntimeClass NSSQLStoreMappingGenerator = "NSSQLStoreMappingGenerator";
		public static readonly RuntimeClass NSSQLSubqueryExpressionIntermediate = "NSSQLSubqueryExpressionIntermediate";
		public static readonly RuntimeClass NSSQLToMany = "NSSQLToMany";
		public static readonly RuntimeClass NSSQLToOne = "NSSQLToOne";
		public static readonly RuntimeClass NSSQLWhereIntermediate = "NSSQLWhereIntermediate";
		public static readonly RuntimeClass NSStoreMapNode = "NSStoreMapNode";
		public static readonly RuntimeClass NSStoreMapping = "NSStoreMapping";
		public static readonly RuntimeClass NSStoreMappingGenerator = "NSStoreMappingGenerator";
		public static readonly RuntimeClass NSStoreMigrationPolicy = "NSStoreMigrationPolicy";
		public static readonly RuntimeClass NSTemporaryObjectID = "NSTemporaryObjectID";
		public static readonly RuntimeClass NSValidationErrorLocalizationPolicy = "NSValidationErrorLocalizationPolicy";
		public static readonly RuntimeClass NSXMLDocumentMap = "NSXMLDocumentMap";
		public static readonly RuntimeClass NSXMLDocumentMapNode = "NSXMLDocumentMapNode";
		public static readonly RuntimeClass NSXMLObjectStore = "NSXMLObjectStore";
		public static readonly RuntimeClass NSXMLObjectStore2 = "NSXMLObjectStore2";
		public static readonly RuntimeClass NSXMLObjectStoreCacheNode2 = "NSXMLObjectStoreCacheNode2";
		public static readonly RuntimeClass NSComparisonPredicate = "NSComparisonPredicate";
		public static readonly RuntimeClass NSInPredicateOperator = "NSInPredicateOperator";
		public static readonly RuntimeClass NSSetExpression = "NSSetExpression";
		public static readonly RuntimeClass NSCompoundPredicateOperator = "NSCompoundPredicateOperator";
		public static readonly RuntimeClass NSSubqueryExpression = "NSSubqueryExpression";
		public static readonly RuntimeClass NSFunctionExpression = "NSFunctionExpression";
		public static readonly RuntimeClass NSCompoundPredicate = "NSCompoundPredicate";
		public static readonly RuntimeClass NSComparisonPredicateOperator = "NSComparisonPredicateOperator";
		public static readonly RuntimeClass NSPredicate = "NSPredicate";
		public static readonly RuntimeClass NSExpression = "NSExpression";
	}
}
